我有呈现相同型号不同视图中的两个的ViewModels。 其中介绍了模型的项目ListBox
,对方提出它作为一个标签TabControl
。 该TabControl
是为那些在选定的项目显示选项卡ListBox
,使得突出来来去去,选择的变化。
我可以很容易地通过添加同步两个控件IsSelected
属性模型和的ViewModels绑定到它(有点像这样 ),但是这会扰乱与表现的细节不真正属于那里的模型。
这似乎是我所需要的型号和的ViewModels之间的事情,以保持这种额外的状态。 是否有一个很好的办法做到这一点的任何模式或例子吗?
使用视图模型。
你有一个包含两个控件视图。 有将包含的ViewModels的列表框控件绑定到一个视图模型。 同样在此视图模型内绑定列表框选择到的ViewModels的第二列表,所述的TabControl然后也结合。
这样,你的列表框驱动标签控件显示了没有这些信息,进入应留忘却的观点存在的模型。
TabControl的是ItemsControl的,所以你不应该羞于它的ItemsSource绑定到ListBox.SelectedITems。
显然,对于视图模型名单应该会产生视图模型为标签的属性:
public TabViewModel ItemTabModel { get { ... } }
而且因为是TabControl的一个有点滑稽,你需要添加ItemContainerStyle来填充TabControlItem内容,因为TableControl正常的ItemTemplate只影响头的标签。