簡體   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