簡體   English   中英

在ViewModels之間共享狀態

[英]Sharing state between ViewModels

我有兩個ViewModel,它們為不同的視圖提供相同的模型。 一個將模型顯示為ListBox的項目,另一個將其顯示為TabControl的選項卡。 TabControl將顯示ListBox中所選項目的選項卡,以便選項更改時選項卡會隨之而來。

我可以通過向模型添加一個IsSelected屬性並將ViewModels綁定到它來輕松地同步這兩個控件(有點像這樣 ),但這會使模型與實際上不屬於那里的演示細節混亂。

似乎我需要Model和ViewModels之間的東西來保持這個額外的狀態。 是否有任何好的方法可以做到這一點?

使用ViewModel。

你有一個包含兩個控件的視圖。 有一個視圖模型,它將包含要綁定到的ListBox控件的ViewModel列表。 同樣在此視圖模型中,將列表框選擇綁定到TabControl隨后也綁定到的第二個視圖模型列表。

這樣,您的列表框就會驅動選項卡控件顯示的內容,而這些信息不會進入模型,而該模型應該忽略視圖的存在。

TabControl是ItemsControl,所以你不應該害怕將其ItemsSource綁定到ListBox.SelectedITems。

顯然,ViewModel for List應該有一個屬性,可以為Tabs生成ViewModel:

public TabViewModel ItemTabModel { get { ... } }

而且因為TabControl有點搞笑,你需要添加ItemContainerStyle來填充TabControlItem的內容,因為TableControl的普通ItemTemplate只影響標簽的標題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM