如何从ViewModel中以编程方式切换选项卡?

时间:2011-09-05 08:19:21

标签: mvvm tabcontrol

我有一个MVVM桌面应用程序。在我的视图中,我有一个TabControl

有关通过更改ViewModel上的属性切换到特定标签的最佳做法的建议吗?

我想可以使用SelectedTab属性来完成,但是Tabs必须存在于ViewModel中,并且View必须绑定到ViewModel中的Tabs列表。目前,这两个选项卡是静态的,因此在执行期间我不会动态创建/删除任何选项卡。因此,我在视图中创建选项卡,它们代表绑定到同一ViewModel的两个不同控件集,因此不是不同视图模型实例的不同选项卡的情况。

4 个答案:

答案 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索引。