2009-09-28 77 views
1

使用样式想象我有一个数据绑定ListView和在<ControlTemplate.Triggers>Windows Presentation Foundation中

我有以下

<DataTrigger Binding="{Binding Path=Status}" Value="Completed"> 
    <Setter Property="Background" Value="{StaticResource CompletedBackground}" /> 
    <Setter Property="Foreground" Value="Black" /> 
</DataTrigger> 

我想要绑定到一个风格,我有我的网格。资源,如下所示:

<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> 

然而,正如你可以想像这是不行的,惊喜惊喜,你不能绑定“二传手”到“背景”,所以我questio ñ是,我怎么才能真正解决问题?

我看了下面很多次,找不到任何信息here

+0

您是否尝试使用DynamicResource而不是StaticResource? – japf 2009-09-28 12:09:59

回答

2

你想要做的是从根本上有缺陷。对于初学者来说,你的风格的设置者不会指定目标属性。据推测,目标属性应该是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的。

取决于你想实现什么,你应该能够只是改变StyleBrush资源:

<LinearGradientBrush x:Key="CompletedBackground" EndPoint="0.5,1" StartPoint="0.5,0"> 
    <GradientStop Color="#FFBCFAA6" Offset="0"/> 
    <GradientStop Color="#FFA3E88B" Offset="1"/> 
</LinearGradientBrush> 

然后以同样的方式,你已经在使用它从你的扳机。

+0

快速回答肯特:)。我不能做得比你快:))。另外我认为Filip引用了在控制模板的逻辑树内定义的样式。可能值得一提的是在 ..中定义它。不在网格中。干杯。 – Anvaka 2009-09-28 12:22:43

+0

我希望它可以通过我所有的ListViews全局访问,所以不仅在该控件模板中。 谢谢 – 2009-09-28 12:28:49

相关问题