Silverlight 4.0 在Silverlight中使用属性绑定更改DataTemplate

Silverlight 4.0 在Silverlight中使用属性绑定更改DataTemplate,silverlight-4.0,mvvm,datatemplate,caliburn.micro,Silverlight 4.0,Mvvm,Datatemplate,Caliburn.micro,我试图从这里使用Eugene Akinshin的代码实现这一点: 这似乎是绑定到现有属性的一种非常好的方法,意味着配置都可以在XAML中定义 然而,我不能让它工作 我正在定义要使用的模板,如下所示: <Converters:TemplateSelectorConverter x:Key="templateConverter"> <Converters:TemplateSelectorCase TemplateReference="Minimised" Template=

我试图从这里使用Eugene Akinshin的代码实现这一点:

这似乎是绑定到现有属性的一种非常好的方法,意味着配置都可以在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>
ItemTemplate="{Binding CurrentState, Converter={StaticResource templateConverter}}"
CurrentState
是一个“最小化”、“最大化”或“还原”的字符串(我编辑了链接示例,将字符串作为键而不是int),默认设置为“最小化”,但我得到的只是一个
列表,无法在我的
列表框中创建[我的对象类型]

模板确实可以工作,因为我可以在ViewModel中公开视图并在代码中设置DataTemplate,并且存在依赖于相同的
CurrentState
属性的可视状态,因此我知道视图可以正确访问该属性。不幸的是,如果我在转换器中中断
Convert()
方法,它永远不会被命中


非常感谢所有建议

不确定您是否已经了解了这一点,但是转换器定义在资源中相对于数据模板的位置将是它工作和不工作的区别

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