的ViewModels之间共享状态(Sharing state between ViewModels

2019-07-30 12:31发布

我有呈现相同型号不同视图中的两个的ViewModels。 其中介绍了模型的项目ListBox ,对方提出它作为一个标签TabControl 。 该TabControl是为那些在选定的项目显示选项卡ListBox ,使得突出来来去去,选择的变化。

我可以很容易地通过添加同步两个控件IsSelected属性模型和的ViewModels绑定到它(有点像这样 ),但是这会扰乱与表现的细节不真正属于那里的模型。

这似乎是我所需要的型号和的ViewModels之间的事情,以保持这种额外的状态。 是否有一个很好的办法做到这一点的任何模式或例子吗?

Answer 1:

使用视图模型。

你有一个包含两个控件视图。 有将包含的ViewModels的列表框控件绑定到一个视图模型。 同样在此视图模型内绑定列表框选择到的ViewModels的第二列表,所述的TabControl然后也结合。

这样,你的列表框驱动标签控件显示了没有这些信息,进入应留忘却的观点存在的模型。



Answer 2:

TabControl的是ItemsControl的,所以你不应该羞于它的ItemsSource绑定到ListBox.SelectedITems。

显然,对于视图模型名单应该会产生视图模型为标签的属性:

public TabViewModel ItemTabModel { get { ... } }

而且因为是TabControl的一个有点滑稽,你需要添加ItemContainerStyle来填充TabControlItem内容,因为TableControl正常的ItemTemplate只影响头的标签。



文章来源: Sharing state between ViewModels