【发布时间】:2012-02-25 13:35:28
【问题描述】:
我们有一个 MVVM (Cinch) 解决方案,其中包含一个带有 TabControl 的窗口。 ItemsSource 绑定到 CollectionView(从 ObservableCollection 生成的 DefaultView),IsSynchronizedWithCurrentItem=true。第一次加载 Window 时一切正常...标签显示正确,用户可以在它们之间切换。
当窗口被隐藏并再次显示时会出现问题。无论 CollectionView 中的 CurrentItem 是什么,始终会再次选择第一个选项卡。 .Show 之前的那行有 CurrentItem 作为我们想要的选项卡,但是在 .Show 操作期间选项卡会切换。
还有其他人遇到过这个问题吗?
【问题讨论】:
-
我刚刚用演示项目对此进行了测试,但无法重现。 dl.dropbox.com/u/18919663/mvvmbug.png 2个按钮,1个隐藏,1个显示窗口,窗口有标签视图,标签在隐藏和显示之间保持不变。如果您在每次调用时重新初始化第二个窗口,它将重置。 (即 Windows2 myWin = new Window2(); myWin.Show();)
-
如果你只是调用 .Show 和 .Hide,我不明白你为什么会看到一个问题,如果你为每个节目创建一个新实例,那是你的问题。
-
窗口及其虚拟机在应用程序的整个生命周期中都会保留,所以我认为它与 MEFedMVVM/Cinch 框架有关。
-
经过更多测试后,我发现问题在于关闭窗口时焦点保持在选项卡上。要修复它,我将焦点设置为选项卡控制外部的控件,只要更改所选选项卡。 span>
标签: wpf selection tabcontrol reset show-hide