在Silverlight中使用属性绑定改变DataTemplate



我正试图实现这使用Eugene Akinshin的代码从这里: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是"最小化","最大化"或"恢复"的字符串(我已经编辑了链接的示例,将字符串作为键而不是int),默认设置为"最小化",但我得到的只是 Cannot create [my object type] 在我的ListBox中的列表。

模板绝对可以工作,因为我可以在ViewModel中暴露视图,并在代码中设置DataTemplate,并且有依赖于相同的CurrentState属性的视觉状态,所以我知道视图可以正确访问属性。不幸的是,如果我在转换器中断点Convert()方法,它永远不会被击中。

非常感谢所有的建议!

不确定您是否已经弄清楚了这一点,但是在资源中与DataTemplate相关的转换器定义的位置将是它工作和不工作之间的区别。

转换器需要放在数据模板之前

相关内容

  • 没有找到相关文章

最新更新