将选项卡控件的SelectedItem与MVVM绑定是一个好主意吗?

我想知道在标签控件中选择了哪个标签。我正在使用MVVM。

我知道我可以绑定选项卡控件的SelectedIndex,但是我也可以绑定selectedItem,它是一个TabItem对象。

我已经读过,视图模型不应该了解该视图,而且很多时候都读到,这意味着不使用属于该视图的类型的对象。因此,在这种情况下,TabItem是属于视图空间的对象,因此我想知道绑定到SelectedItem是否是一个好主意。

但是,建议不要绑定属于视图的类型,我理解的不仅仅是视图模型不应该依赖于视图的结构或行为来分离这两个部分。但是,从某些角度来看,TabItem只是一个对象,我以一种隔离的方式使用了该对象(我不是将视图模型绑定到视图)。我将tabItem用作其他任何对象。

所以我的问题是,在MVVM中,在视图模型中使用TabItem真的不是一个好主意吗?

编辑:我添加了标签控件的代码:

                        <TabControl HorizontalAlignment="Stretch" Margin="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}"/>

我有个人用户控件,而城市有其他用户控件。

WOAI88521 回答:将选项卡控件的SelectedItem与MVVM绑定是一个好主意吗?

是的,SelectedItem绝对是个好主意。在TabControl上,SelectedItem将绑定到TabControl数据源的数据类型。

示例:

<TabControl x:Name="TabControl1"
                    Margin="10"
                    ItemsSource="{Binding Employees}"
                    SelectedItem="{Binding SelectedEmployee}">
</TabControl>

public class ViewModel
{
    private Employee _selectedEmployee;

    public IList<Employee> Employees { get; private set; }

    public Employee SelectedEmployee
    {
        get { return _selectedEmployee; }
        set
        {
            if (_selectedEmployee == value)
            {
                return;
            }

            _selectedEmployee = value;
            OnNotifyPropertyChanged();
        }
    }
}

ViewModel对UI数据类型一无所知,只知道基础数据(SelectedEmployee)。

请参阅:Scrum Guide

本文链接:https://www.f2er.com/3122329.html

大家都在问