2012-07-02 4 views
1

У меня есть ItemsControl с несколькими DataTemplate и использовать ItemTemplateSelector выбрать подходящий DataTemplate каждого пункта ItemsSource. Я хочу привязать ItemTemplateSelector к свойству свойства TemplateType элемента. и каждый раз, когда свойство TemplateType изменилось, DataTemplate сменить automaticaly. Как я могу сделать.Auto обновить ItemTemplateSelector

ответ

4

I Поиск по собственным вопросам. и найти ниже код, чтобы обновить ItemTemplateSelector:

DataTemplateSelector DataTemplateSelector = plan.ItemTemplateSelector; 
plan.ItemTemplateSelector = null; 
plan.ItemTemplateSelector = DataTemplateSelector; 
2

В вашем случае я бы выбрал другое решение, если вы хотите обновить шаблон данных. Я бы создал привязку к ItemTemplate вашего ItemsControl. Это связывание получает назначенный преобразователь, который содержит логику вашего текущего элемента ItemTemplateSelector. И источником привязки является ваше свойство TemplateType.

ItemTemplateSelector предназначен для оценки только одним выстрелом.

+0

ItemTemplate является собственностью ItemsControl и я не могу Bind пункт к нему. –

+0

Что вы имеете в виду, что вы не можете привязываться к нему?

+0

Когда я использую 'ItemTemplate =" {Binding Converter = {StaticResource myconv}} "', получить нулевое значение в функции преобразователя. Я ожидаю, что получим мой элемент в функции конвертера. –

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