gpt4 book ai didi

c# - 将 View 模型集合绑定(bind)到 WPF MVVM TabControl

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:44 25 4
gpt4 key购买 nike

我有一组要绑定(bind)到 ItemsSource 的 ViewModel TabControl 的属性并能够动态添加/删除它们,因此已实现为 Observable<TabViewModel> .

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

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

如何使用 TabControl 执行此操作不使用TabItem

最佳答案

How can I bind a collection of ViewModels to populate the headers and content of a tab control without depending on the TabItem object?

试试这个:

查看:

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

关于c# - 将 View 模型集合绑定(bind)到 WPF MVVM TabControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50351899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com