2012-02-02 69 views
3

我们有一个带有TabControl的Window的MVVM(Cinch)解决方案。 ItemsSource绑定到CollectionView(由ObservableCollection生成的DefaultView),并且IsSynchronizedWithCurrentItem = true。第一次加载窗口时,一切正常,...标签显示正确,用户可以在它们之间切换。TabControl在Window.Show上丢失选定的选项卡

当窗口被隐藏并再次显示时,会出现该问题。无论CollectionView中的CurrentItem是什么,第一个选项卡总是被再次选中。 .Show之前的行将CurrentItem作为我们需要的选项卡,但在.Show操作期间切换选项卡。

有没有其他人遇到过这个问题?

+0

我justed测试了这个与演示项目,我不能再现这一点。 http://dl.dropbox.com/u/18919663/mvvmbug.png 2按钮,1隐藏,1显示窗口,该窗口具有选项卡视图,选项卡在隐藏和显示之间保持不变。 如果您在每次调用中重新初始化第二个窗口,它将重置。 (即Windows2 myWin = new Window2(); myWin.Show();) – Corylulu 2012-02-02 21:44:16

+0

如果你只是调用.Show和.Hide,我不明白为什么你会看到一个问题,如果你正在为每个显示,那是你的问题。 – Corylulu 2012-02-02 21:45:38

+0

该窗口及其虚拟机在应用程序的整个生命周期中保留,所以我认为它与MEFedMVVM/Cinch框架有关。 – 2012-02-03 13:32:29

回答

1

这绝对是一个黑客。但是,您可以重写Activated事件并在重置之前存储Tab索引,并在重新激活时再次将其设置。

protected override void OnActivated(EventArgs e) 
{ 
    int tabControlIndex = myTabController.SelectedIndex; 
    base.OnActivated(e); 
    myTabController.SelectedIndex = tabControlIndex ; 
} 
+0

工程就像一个魅力,谢谢! – 2012-02-03 13:20:32

相关问题