[英]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.