我想在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?
请建议?
谢谢。
答案 0 :(得分:3)
您不能对DynamicResource属性使用绑定,因为它不是从DependencyObject派生的。您可能需要直接从代码隐藏设置Style属性,或者只使用Binding。
您可以使用Button类型的Style,它具有基于动态更改外观的自定义属性的DataTrigger。但在这种情况下,您需要一个Style,它会根据您的条件更改它的设置器。它不允许您动态更改Style属性。
答案 1 :(得分:0)
你可以尝试这个...我想出了一种创建DynamicResourceBinding的方法,你可以使用转换器来实现你想要的结果。 (理论上你也可以使用样式和触发器,但我离题了......)
How do you create a DynamicResourceBinding that supports Converters, StringFormat?