Pau*_*der 8 .net wpf xaml binding datatrigger
我有以下XAML用于显示有关在列表视图中选择的项目的详细信息.我希望矩形显示文本后面的标准信息颜色,除非所选项目表示错误消息.下面的代码不能正常工作,并始终显示信息颜色.如果我没有Fill为根<Rectangle />元素指定a ,它的效果很好.
<Rectangle Fill="{DynamicResource {x:Static SystemColors.InfoBrushKey}}"
RadiusX="4" RadiusY="4">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=CurrentMessage.Severity"
Value="Error" >
<Setter Property="Fill" Value="#20FF0000" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
Run Code Online (Sandbox Code Playgroud)
该代码段并未反映它,但实际代码对于Severity具有相当多的可能状态级别,因此我不想为每种可能的严重性定义触发器.我想要的逻辑是"使用信息颜色,除非严重性是错误,然后使用红色".
我确信我误解了WPF的一些基本方面,但似乎无法确定它.有人能指出我正确的方向,以便我指定的数据触发器在条件为真时覆盖现有的Fill值吗?
Mat*_*ton 10
你快到了.不要在"矩形"上指定"默认"填充作为属性,而是在"样式"中指定它:
<Rectangle RadiusX="4" RadiusY="4">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Fill"
Value="{DynamicResource {x:Static SystemColors.InfoBrushKey}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=CurrentMessage.Severity"
Value="Error" >
<Setter Property="Fill" Value="#20FF0000" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
Run Code Online (Sandbox Code Playgroud)