2009-08-11 4 views
25

Каков самый простой пример привязки элементов TabControl к ObservableCollection?Как связать элементы TabControl с наблюдаемой коллекцией в wpf?

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

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

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

Большое спасибо!

ответ

35

Простой пример:

<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> 
+10

Вы знаете, WPF + MVVM имеет такой крутой кривой обучения, но как только вы получите повесить его решения, на самом деле очень элегантный и чистый. Спасибо за вашу помощь :) – bluebit

+0

Я согласен с тем, что WPF имеет крутую кривую обучения, но я бы не сказал, что о шаблоне MVVM ... на самом деле это совершенно естественно, когда вы начинаете использовать его :) –

+1

Пока шаблоны данных содержат только элементы только для чтения, этот подход работает. В противном случае вы должны быть осторожны: TabControl воссоздает представление каждый раз, когда вы меняете вкладку, т. Е. Вы теряете визуальное состояние при переключении с одной вкладки на другую, а затем снова переключаетесь. – 2012-04-04 17:18:14

Смежные вопросы