将视图模型的集合绑定到WPF MVVM TabControl

时间:2018-05-15 13:45:52

标签: c# wpf xaml mvvm

我有一个ViewModel集合,我想绑定到ItemsSource的{​​{1}}属性,并且能够动态添加/删除它们,因此已实现为TabControl。< / p>

然而,Observable<TabViewModel>似乎期望继承自TabControl的类型,它是一个可视控件对象。我不希望我的ViewModel继承自TabItem,因为这意味着他们需要绑定到可视实现,并且所有测试都需要作为STA运行。

如何绑定ViewModel集合以填充选项卡控件的标题和内容,而不依赖于TabItem对象?即我只使用基于ViewModel类型的样式和模板。就像你有TabItem并希望项目直接从viewmodel实例呈现,使用特定模板,通过覆盖ListBox属性很容易做到。

如何使用ItemTemplate而不使用TabControl

执行此操作

1 个答案:

答案 0 :(得分:1)

  

如何绑定ViewModel集合以填充制表符控件的标题和内容,而不依赖于TabItem对象?

试试这个:

查看:

<TabControl ItemsSource="{Binding Items}">
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Header}" />
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Content}" />
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

查看型号:

public class TabViewModel
{
    public TabViewModel()
    {
        Items = new ObservableCollection<Item>()
        {
            new Item { Header = "a", Content = "..." },
            new Item { Header = "b", Content = "..." },
            new Item { Header = "c", Content = "..." },
        };
    }

    public ObservableCollection<Item> Items { get; set; }
}

Item是POCO课程。