在DynamicResource ResourceKey wpf mvvm中绑定

时间:2011-04-12 12:22:41

标签: c# wpf mvvm

我想在if else条件的基础上绑定按钮的样式。我在viewmodel中创建了一个字符串属性,并绑定到按钮的样式属性,如下所示:

<Button x:Name="copd" Content="COPD" 
    Command="{Binding COPDReadingsCommand}" 
    Style="{DynamicResource ResourceKey={Binding CheckCopd}}"  
    HorizontalAlignment="Center" VerticalAlignment="Center" 
    Margin="20" FontWeight="Bold" />

我循环遍历resourceDictionary并获取所有密钥。使用if else我在if else中更改字符串属性值(CheckCopd)。

我在if else中获得了所需的值,但在执行我的应用程序时,样式未应用于按钮。它只显示通用按钮样式。

如何绑定DynamicResource?

请建议?

谢谢。

2 个答案:

答案 0 :(得分:3)

您不能对DynamicResource属性使用绑定,因为它不是从DependencyObject派生的。您可能需要直接从代码隐藏设置Style属性,或者只使用Binding。

您可以使用Button类型的Style,它具有基于动态更改外观的自定义属性的DataTrigger。但在这种情况下,您需要一个Style,它会根据您的条件更改它的设置器。它不允许您动态更改Style属性。

答案 1 :(得分:0)

你可以尝试这个...我想出了一种创建DynamicResourceBinding的方法,你可以使用转换器来实现你想要的结果。 (理论上你也可以使用样式和触发器,但我离题了......)

How do you create a DynamicResourceBinding that supports Converters, StringFormat?