我有一个MVVM桌面应用程序。在我的视图中,我有一个TabControl
。
有关通过更改ViewModel上的属性切换到特定标签的最佳做法的建议吗?
我想可以使用SelectedTab
属性来完成,但是Tabs必须存在于ViewModel中,并且View必须绑定到ViewModel中的Tabs列表。目前,这两个选项卡是静态的,因此在执行期间我不会动态创建/删除任何选项卡。因此,我在视图中创建选项卡,它们代表绑定到同一ViewModel的两个不同控件集,因此不是不同视图模型实例的不同选项卡的情况。
答案 0 :(得分:4)
尝试绑定到SelectedIndex属性以切换到Tab。
答案 1 :(得分:2)
不确定您使用的MVVM框架,但可能的解决方案是为每个选项卡创建一个ViewModel,并使用父ViewModel。
然后父ViewModel可以激活相关的子ViewModel,然后激活正确的View。
答案 2 :(得分:1)
在viewmodel上创建一个IsSelected属性,您可以将其数据绑定到tabitem的IsSelected属性
答案 3 :(得分:0)
从MVVM
角度来看,ViewModel不应该知道像TabContainer
等查看详细信息,因此对于ViewModel,使用TabContainer
或{{1}的基础视图是否无关紧要} 控制。因此,考虑像ViewModel公开的简单ListView
那样直截了当,然后绑定到底层View的UI项容器。
显然可以公开IEnumerable<IRepresentationItem> Items
属性,该属性可以绑定到UI Items容器的相应SelectedTab / SelectedItem索引。