因此,我對WPF和MVVM相當陌生,我在這裏遇到了一個TabControl問題,並試圖在切換標籤時保留數據。基本上我有一個TabControl內的視圖和TabItems動態加載和基於用戶交互刪除。每個TabItem都是一個UserControl,它是具有自己的視圖模型的自己的視圖。如何在WPF MVVM中動態設置視圖的DataContext
每次刪除一個TabItem(並不總是隻是轉到另一個選項卡,有時這些選項卡實際上被刪除並重新創建)我正在保存其viewmodel的實例並保留數據,但我無法獲取該數據當標籤被重新創建時。我使用一個DataTemplate創建的TabItems
<DataTemplate x:Key="MyView" DataType="{x:Type vm:MyViewModel}">
<uc:MyView />
</DataTemplate>
和引用,在TabControl的。
<TabControl ItemsSource="{Binding ViewModelList, Mode=TwoWay}"
ContentTemplate="{StaticResource MyView}"
ItemTemplate="{StaticResource MyHeader}"
SelectedIndex="{Binding SelectedTabIndex, Mode=TwoWay}" />
一切正常,只要能夠顯示的一切方式,但我一次比一次一個新的空白版本我的用戶的。設置爲ViewModelList的itemssource正是它聽起來的樣子,我的viewmodel實例列表保存每個選項卡的狀態,以便重新創建它。這裏的問題是,這裏使用的DataTemplate方法並不真正讓我有辦法將視圖模型數據綁定到每次創建新TabItem時創建的視圖的新實例。
我沒有使用MVVMLight或棱鏡,但我有我嘗試在這裏使用的自定義EventAggregator。我遇到的問題是在正確的時間將數據傳送到視圖模型的正確實例。我認爲我的問題的一部分是,MyViews datacontext正在其代碼隱藏構造函數中設置爲MyViewModel的新實例,它覆蓋了我嘗試傳入的任何其他內容...
我只是不知道如何修復這個。我對這個漫長的問題表示歉意,但我想盡力涵蓋一切。如果有人需要更多信息,請提前告知我!
好吧,它沒有破壞任何東西,很難說它是否改變了一切。我得多挖一點。這正是我想到的想法,只是希望這是可能的。 – aw04
它工作還是不工作? – DHN
不要自己至少 – aw04