2012-03-11 4 views
0

У моего приложения WPF есть TabControl с 4 TabItem. Каждый TabItem имеет другой ListView с GridView как View. Элемент ItemContainerStyle TabControl определяет пользовательский заголовок с «нормальным» ContentPresenter и текстовым полем.Обновление TabItemHeader при изменении содержимого TabItem

Как я могу обновить TextBox каждого заголовка TabItem, чтобы показать количество элементов каждого LisView при изменении ListView.ItemSource? Элемент ItemSource периодически устанавливается асинхронно из потока в коде позади.

RunOnUI(() => { firstTabList.ItemsSource = itemsFirstList; });

Благодаря

+0

Как вы устанавливаете ItemsSource? Каков ваш подход - MVVM или простые обработчики событий в коде? – EvAlex

+0

Я просто ответил на аналогичный вопрос: http://stackoverflow.com/questions/9547461/how-to-create-tab-able-content-in-wpf-c/9648672#9648672. Это может помочь. Если нет, отправьте код. – Phil

+0

@EvAlex: Я использую код. –

ответ

0

Если вы используете код позади, то вы можете назвать TabItem

<TabItem x:Name="tabItem1" ...> 

, а затем установить заголовок при обновлении ItemsSource

RunOnUI(()=>{ 
    firstTabList.ItemsSource = itemsFirstList; 
    tabItem1.Header = string.Format("Header: {0}", itemsFirstList.Count); 
} 
+0

Да, это решает проблему. В другом контексте, возможно ли это сделать с помощью привязки XAML, с конвертером, получающим список и возвращающим количество элементов? –

+0

Вам не нужен конвертер, вам нужна модель просмотра с поддержкой INotifyPropertyChanged. Вы можете легко адаптировать пример, на который я указал вам. – Phil

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