2011-04-23 36 views
2

我有一個數據網格綁定到集合。我已經申請了以下rowstyle到DataGrid:DataGridRow MultiDataTrigger爲背景:IsSelected條件不起作用

<DataGrid.RowStyle> 
    <Style TargetType="DataGridRow"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Status}" Value="Down"> 
       <Setter Property="Background" Value="Red" /> 
       <Setter Property="Foreground" Value="White" /> 
      </DataTrigger> 
      <MultiDataTrigger> 
       <MultiDataTrigger.Conditions> 
        <Condition Binding="{Binding Status}" Value="Down" /> 
        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsSelected}" Value="True" /> 
       </MultiDataTrigger.Conditions> 
       <Setter Property="Background" Value="Green" /> 
       <Setter Property="Foreground" Value="White" /> 
      </MultiDataTrigger> 
     </Style.Triggers> 
    </Style> 
</DataGrid.RowStyle> 

的datatrigger工作,但不是multidatatrigger。失敗的條件是檢查DataGridrow上的IsSelected是否爲true。如果我改變它,所以它使用一個總是返回true的值轉換器,我會看到綠色的行。

基本上我希望行數據對象的狀態屬性設置爲紅色,但是當我選擇這些行時,他們需要變爲綠色(或實際變暗)而不是默認的藍色。

回答

4

你的約束是非常好的。但DataGrid使用SystemColors.HighlightBrush和SystemColors.HighlightTextBrush來突出顯示選定的行。要更改選定行的顏色,你可以只覆蓋刷你的DataGrid這樣的:

<DataGrid.Resources> 
     <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> 
    </DataGrid.Resources> 

這樣,你應該能夠看到的背景顏色由你觸發設置。

希望這會有所幫助!

+0

此刻出城。如果你可以證實這個作品,我會將其標記爲答案。謝謝! – rhyek 2011-04-23 17:58:10

+0

非常歡迎您。不知道它是否適合您。但它對我有用。試試吧......祝你好運! – harri 2011-04-23 19:18:31

0

您需要修改DataGrid.CellStyle,而不是DataGrid.RowStyle。最後一個是僅用於未選中的行。