Уведомить DataTemplateSelector об изменении - PullRequest
1 голос
/ 22 августа 2009

Я использую DataTemplateSelector для выбора шаблона заголовков столбцов ListView. Сам ListView определен в DataTemplate и имеет несколько вкладок. Итак, на практике у меня есть один и тот же DataTemplate (так и ListView), примененный к нескольким TabItems. Это означает, что если я выберу вкладку {A} и установлю XDataTemplate в столбце ListView {AColumn}, то переключу вкладку, скажем, на вкладку {B}, в столбце ListView {B} (который всегда один и тот же) {AColumn}, мы увидим тот же XDataTemplate, поскольку они совместно используют одни и те же данные пользовательского интерфейса. Поэтому я создал слой данных, в котором хранится реляционная информация о {Tab} <-> {ListView: Column} <-> {HeaderContent}. Это фактически читает DatatemplateSelector для того, чтобы правильно обновить пользовательский интерфейс на экране пользователя. Как я могу уведомить DataTemplateSelector для обновления текущего представления при необходимости по запросу?

Спасибо.

1 Ответ

3 голосов
/ 23 августа 2009

Я нашел решение этой проблемы, и это было не так сложно, как я думал. Шаблон применяется к заголовку столбца ListView. Этого достаточно, чтобы изменить значение заголовка, чтобы создать внутреннее событие WPF, которое автоматически выполнит SelectTemplate для DataTemplateSelector.

Вот пример кода:

if (MyListView != null)
 {
      foreach (GridViewColumn col in (MyListView.View as GridView).Columns)
      {
            string header = col.Header.ToString();
            col.ClearValue(GridViewColumn.HeaderProperty);
            col.SetValue(GridViewColumn.HeaderProperty, header);
      }
 }

Вот и все. Надеюсь, это поможет кому-то в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...