![](/img/trans.png)
[英]c# WPF MVVM TabControl with Multiple ViewModels and changing tabs
[英]Binding collection of viewmodels to WPF MVVM TabControl
我有一组 ViewModel 我想绑定到TabControl
的ItemsSource
属性并能够动态添加/删除它们,因此已实现为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.