2012-02-02 91 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

相關問題