想象一下,我有一个数据绑定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。
答案 0 :(得分:2)
你要做的事情从根本上是有缺陷的。对于初学者,您的样式的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>
然后以与现有相同的方式从触发器中使用它。