在DynamicResource ResourceKey中绑定wpf mvvm

问题描述:

我想在if条件的基础上绑定按钮的样式。我创建的视图模型和绑定一个字符串属性到按钮的样式属性是这样的:在DynamicResource ResourceKey中绑定wpf mvvm

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

我通过ResourceDictionary中循环,并让所有的钥匙。使用,如果否则我改变字符串属性值(CheckCopd),如果否则。

我得到所需的值,如果其他但风格没有得到应用到按钮,当我执行我的应用程序。它只显示通用按钮样式。

如何绑定DynamicResource?

请推荐?

谢谢。

+0

如果你能证明一点关于你想什么来完成,那么这将是更容易显示一个可行解。 – CodeNaked 2011-04-12 13:37:58

+0

我想在第一次加载wpf应用程序的基础上改变按钮的样式。在使用if加载的应用程序中,将会有一种样式的按钮,而在其他部分中,会有另一种样式。风格不过是一个形象。 Tarun 2011-04-13 07:27:27

+0

你可以发布你的两个样式或修剪版吗? – CodeNaked 2011-04-13 11:20:53

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

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

+0

这个,但我认为你需要向他展示一个小例子。 – Will 2011-04-12 13:32:30

+0

@CodeNaked ...请提供一些示例。 – Tarun 2011-04-13 04:28:41

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

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