Я пытаюсь реализовать это, используя код Евгения Акиншина отсюда: 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()
в конвертере, он никогда не будет получен.
Все предложения с благодарностью!