【发布时间】:2019-11-11 17:46:33
【问题描述】:
我想知道在选项卡控件中选择了哪个选项卡。我正在使用 MVVM。
我知道我可以绑定选项卡控件的SelectedIndex,但我也可以绑定selectedItem,它是一个TabItem对象。
我读到视图模型不应该知道视图,并且很多时候读到这意味着不使用属于视图的类型的对象。所以在这种情况下,TabItem 是一个属于视图空间的对象,所以我想知道绑定到 SelectedItem 是否是个好主意。
但是,建议不要绑定属于视图的类型,我理解的不仅仅是视图模型不应该依赖于视图的结构或行为来分离这两个部分。但是,从某种角度来看,TabItem 只是一个对象,我以隔离的方式使用它(我没有将视图模型与视图对齐)。我将 tabItem 用作任何其他对象。
所以我的问题是,在 MVVM 中,在我的视图模型中使用 TabItem 真的是个坏主意吗?
编辑:我添加标签控件的代码:
<TabControl HorizontalAlignment="Stretch" Margin="5,5,5,5" Grid.Column="0" Grid.Row="1" VerticalAlignment="Stretch" Grid.ColumnSpan="2">
<TabItem Header="Persons" Content="{Binding Persons}"/>
<TabItem Header="Cities" Content="{Binding Cities}"/>
我有一个用于人员的用户控件和用于城市的其他用户控件。
【问题讨论】:
-
当您手动编写不同的
<TabItem>s 时:是的,这是个坏主意。绑定 SelectedIndex 不会很好,但在这种情况下可以使用。仅当您还将 ItemsSource 绑定到某些东西时,绑定 Selecteditem 才有意义,请参阅@d.moncada 的答案。 -
那么
{Binding Persons}是如何产生 UserControl 的呢?