【问题标题】:Binding in DynamicResource ResourceKey wpf mvvmDynamicResource ResourceKey wpf mvvm中的绑定
【发布时间】:2015-11-20 08:15:06
【问题描述】:

我想根据 if else 条件来绑定按钮的样式。我在视图模型中创建了一个字符串属性并绑定到按钮的样式属性,如下所示:

<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 中获得了所需的值,但是当我执行我的应用程序时,样式没有应用于按钮。它只显示通用按钮样式。

如何绑定动态资源?

请推荐?

谢谢。

【问题讨论】:

  • 如果你能多展示一些你想要完成的事情,那么展示一个可行的解决方案会更容易。
  • 我想在首次加载 wpf 应用程序时根据 if else 条件更改按钮的样式。在使用 if 加载的应用程序上,会有一种按钮样式,而在 else 部分,会有另一种。风格不过是一种形象。
  • 能否请您发布您的两个样式或精简版?
  • @CodeNaked。我已经使用了 DataTriggers 并且工作正常。谢谢

标签: c# wpf mvvm


【解决方案1】:

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

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

【讨论】:

  • @CodeNaked...请提供一些例子。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2014-08-08
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 2017-05-01
    • 2017-08-20
    • 2011-08-28
    • 1970-01-01
    相关资源
    最近更新 更多