我有一个ViewModel集合,我想绑定到ItemsSource
的{{1}}属性,并且能够动态添加/删除它们,因此已实现为TabControl
。< / p>
然而,Observable<TabViewModel>
似乎期望继承自TabControl
的类型,它是一个可视控件对象。我不希望我的ViewModel继承自TabItem
,因为这意味着他们需要绑定到可视实现,并且所有测试都需要作为STA运行。
如何绑定ViewModel集合以填充选项卡控件的标题和内容,而不依赖于TabItem
对象?即我只使用基于ViewModel类型的样式和模板。就像你有TabItem
并希望项目直接从viewmodel实例呈现,使用特定模板,通过覆盖ListBox
属性很容易做到。
如何使用ItemTemplate
而不使用TabControl
?
答案 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课程。