假设我有一个数据绑定ListView,并且在<ControlTemplate.Triggers>中
我有以下几点
<DataTrigger Binding="{Binding Path=Status}" Value="Completed">
<Setter Property="Background" Value="{StaticResource CompletedBackground}" />
<Setter Property="Foreground" Value="Black" />
</DataTrigger>我希望将其绑定到我的Grid.Resources中的样式,如下所示:
<Style x:Key="CompletedBackground" TargetType="ListViewItem">
<Setter>
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFBCFAA6" Offset="0"/>
<GradientStop Color="#FFA3E88B" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>然而,正如你可能想象的那样,这不起作用,令人惊讶的是,你不能将"Setter“绑定到"Background",所以我的问题是,我如何真正解决这个问题?
我已经看了下面很多次了,找不到任何信息here。
发布于 2009-09-28 12:16:52
你试图做的事情从根本上来说是有缺陷的。对于初学者来说,你的样式的setter没有指定目标属性。假定,目标属性应为Background
<Style x:Key="CompletedBackground" TargetType="ListViewItem">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFBCFAA6" Offset="0"/>
<GradientStop Color="#FFA3E88B" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>其次,您将尝试将一个Style实例分配给Background属性,该属性的类型是Brush,而不是Style。
根据您想要实现的确切目标,您应该能够将Style更改为Brush资源:
<LinearGradientBrush x:Key="CompletedBackground" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFBCFAA6" Offset="0"/>
<GradientStop Color="#FFA3E88B" Offset="1"/>
</LinearGradientBrush>然后在你的触发器中使用它,就像你已经做的一样。
https://stackoverflow.com/questions/1486500
复制相似问题