繁体   English   中英

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

[英]Binding collection of viewmodels to WPF MVVM TabControl

我有一组 ViewModel 我想绑定到TabControlItemsSource属性并能够动态添加/删除它们,因此已实现为Observable<TabViewModel>

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

如何在不依赖TabItem对象的情况下绑定一组 ViewModel 来填充选项卡控件的标题和内容? 即仅使用我认为基于 ViewModel 类型的样式和模板。 就像如果您有一个ListBox并希望项目直接从 viewmodel 实例呈现,使用特定的模板,这很容易通过覆盖ItemTemplate属性来实现。

如何在不使用TabItem情况下使用TabControl执行此操作?

如何在不依赖 TabItem 对象的情况下绑定一组 ViewModel 来填充选项卡控件的标题和内容?

尝试这个:

看法:

<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 类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM