WPF:绑定时在DataTrigger设置画布颜色值为null
我画布的背景属性绑定到一些SelectedColorItem对象是这样的:WPF:绑定时在DataTrigger设置画布颜色值为null
<Canvas>
<Canvas.Style>
<Style TargetType="Canvas">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedColorItem,Mode=OneWay,Converter={StaticResource isNullConverter}}"
Value="True">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</Canvas.Style>
<Canvas.Background>
<SolidColorBrush Color="{Binding SelectedColorItem.MediaColor}" />
</Canvas.Background>
</Canvas>
它的工作原理 - 它会显示所选择的颜色。 什么不起作用我写的DataTrigger表示SelectedColorItem为空。
最简单的isNullValueConverter无论是工作 - 这可能与标签进行了验证:
<Label Content="{Binding Path=SelectedColorItem,Mode=OneWay,Converter={StaticResource isNullConverter}}" />
它显示真,当SelectedColorItem是零和假否则。
有人能告诉我触发器有什么问题吗?
P.S. SelectedColorItem是ColorItemClass的一个实例,它包含一个MediaColor属性:
public System.Windows.Media.Color MediaColor {get;set;}
的事情是,元素本身设置的值具有较高的“优先”当从款式,含义值设置的样式里面的值(包括触发器)不能覆盖本地设置的值。
也被设置,你需要有在同一水平上两个值,所以只需移动Background
财产的风格域:
<Canvas>
<Canvas.Style>
<Style TargetType="Canvas">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{Binding SelectedColorItem.MediaColor}" />
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedColorItem,Mode=OneWay,Converter={StaticResource isNullConverter}}"
Value="True">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</Canvas.Style>
</Canvas>
谢谢你,帕夫洛。它的工作原理 – Niccolo 2011-03-16 15:47:25
您明确设置了背景属性。现在实现您想要的最简单的方法是将绑定fallbackvalue设置为Red。像:
<Canvas>
<Canvas.Background>
<SolidColorBrush Color="{Binding SelectedColorItem.MediaColor, FallbackValue=Red}" />
</Canvas.Background>
</Canvas>
或者你也可以使用相同的datatrigger false值来设置绑定
谢谢你,马库斯。您编写的代码片段以及使用其他数据触发器的建议都可行。 – Niccolo 2011-03-16 15:51:17
我认为这将是我们更容易回答,如果你提供关于你的问题多一点澄清。我的意思是,如果你将分享你的应用程序的任何示例代码。 – SharpUrBrain 2011-03-16 15:34:02
我添加了与问题相关的属性的描述,但代码完全没有问题。 – Niccolo 2011-03-16 15:41:21