2009-09-28 75 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

相關問題