Как связать элементы TabControl с наблюдаемой коллекцией в wpf? - PullRequest
26 голосов
/ 11 августа 2009

Какой самый простой пример привязки элементов TabControl к ObservableCollection?

Содержимое каждой вкладки будет иметь уникальные данные, и, действительно, эти данные будут иметь собственные наблюдаемые коллекции, связанные с компонентами элементов.

В настоящее время у меня есть пользовательский элемент управления, который я хотел бы установить в качестве содержимого каждой вкладки, как только она будет создана. Мне также нужно динамически установить текст данных этого нового пользовательского элемента управления при создании вкладки. Итак, по сути, я хотел бы, чтобы наблюдаемая коллекция tabcontrol содержала представления модели, которые сопоставляются с данными в каждой вкладке.

Кроме того, мне нужно сделать все это, не нарушая MVVM в WPF! Любая помощь?

Очень ценится!

1 Ответ

37 голосов
/ 11 августа 2009

Базовый пример:

<Window.Resources>

    <DataTemplate x:Key="templateForTheContent" DataType="{x:Type vm:TheViewModelType}">
        <v:YourUserControl/>
    </DataTemplate>

    <DataTemplate x:Key="templateForTheHeader" DataType="{x:Type vm:TheViewModelType}">
        <TextBlock Text="{Binding ThePropertyToDisplayInTheHeader}"/>
    </DataTemplate>

</Window.Resources>

...

<TabControl ItemsSource="{Binding YourCollection}"
            ContentTemplate="{StaticResource templateForTheContent}"
            ItemTemplate="{StaticResource templateForTheHeader}">
</TabControl>
...