Изменение DataTemplate с привязкой свойства в Silverlight - PullRequest
1 голос
/ 21 ноября 2011

Я пытаюсь реализовать это, используя код Евгения Акиншина отсюда: http://forums.silverlight.net/t/237947.aspx/1

Кажется, что это действительно хороший способ привязки к уже существующим свойствам, и означает, что конфигурация может быть определена в XAML.

Однако , я не могу заставить его работать.

Я определяю шаблоны для использования следующим образом:

<Converters:TemplateSelectorConverter x:Key="templateConverter">
    <Converters:TemplateSelectorCase TemplateReference="Minimised" Template="{StaticResource SmallOrders}"/>
    <Converters:TemplateSelectorCase TemplateReference="Restored" Template="{StaticResource MediumOrders}"/>
    <Converters:TemplateSelectorCase TemplateReference="Maximised" Template="{StaticResource LargeOrders}"/>
</Converters:TemplateSelectorConverter>

и затем настройте шаблон элемента моего ListBox следующим образом:

ItemTemplate="{Binding CurrentState, Converter={StaticResource templateConverter}}"

CurrentState - это строка 'Minimized', 'Maximized' или 'Restored' (я отредактировал связанный пример, чтобы в качестве ключа вместо строки использовалась строка), и для него установлено значение Minimized: по умолчанию, но все, что я получаю, это список Cannot create [my object type] в моем ListBox.

Шаблоны определенно работают, так как я могу представить View в ViewModel и установить DataTemplate в коде, и существуют визуальные состояния, которые работают с тем же свойством CurrentState, которые работают, поэтому я знаю, что View может обращаться к свойству правильно , К сожалению, если я остановлю метод Convert() в конвертере, он никогда не будет получен.

Все предложения с благодарностью!

1 Ответ

0 голосов
/ 02 мая 2012

Не уверен, что вы поняли это или нет, но размещение определения Конвертера в Ресурсе по отношению к DataTemplate будет разницей между тем, работает он или не работает.

Конвертер необходимо разместить до шаблона данных.

...