绑定在WPF MVVM中的DynamicResource ResourceKey

3

我希望根据if else条件绑定按钮的样式。我在ViewModel中创建了一个字符串属性,并将其绑定到按钮的style属性上,例如:

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

我正在循环遍历资源字典并获取所有的键。使用if else,我在其中更改字符串属性值(CheckCopd)。

我在if else中得到了所需的值,但当我执行应用程序时,样式没有应用到按钮上。它只显示通用按钮样式。

如何绑定DynamicResource?

请给予建议?

谢谢。


如果您可以展示一下您尝试实现的目标,那么展示一个可行的解决方案就会更容易些。 - CodeNaked
我想在WPF应用程序加载时根据if else条件更改按钮的样式。使用if加载应用程序时,将有一个按钮样式,在else部分中,将有另一个样式。样式只是一张图片。 <Button command = "" style = ""/> - Tarun
请问您能否发布您的两个样式或者一个精简版本? - CodeNaked
@CodeNaked。我已经使用了DataTriggers,它运行良好。谢谢。 - Tarun
2个回答

3

由于DynamicResource属性并非继承自DependencyObject,您无法在其上使用Bindings。您可以在代码后台直接设置Style属性,或者只使用一个Binding。

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


@CodeNaked...请提供一些示例。 - Tarun

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接