2012-06-09 35 views
2

我想設置不同的顏色在不同的數據網格行,基於該行的類型以及是否選擇:不同的選擇顏色不同的DataGrid行

<Style TargetType="DataGridCell" x:Key="ActiveCellStyle"> 
    <Setter Property="Foreground" Value="Black"/> 
    <Style.Triggers> 
     <MultiDataTrigger> 
      <MultiDataTrigger.Conditions> 
       <Condition Binding="{Binding Type}" Value="0"/> 
       <Condition Property="IsSelected" Value="False"/> 
      </MultiDataTrigger.Conditions>  
      <Setter Property="Background" Value="#FFDFE6ED"/> 
     </MultiDataTrigger> 
     <MultiDataTrigger> 
      <MultiDataTrigger.Conditions> 
       <Condition Binding="{Binding Type}" Value="0"/> 
       <Condition Property="IsSelected" Value="True"/> 
      </MultiDataTrigger.Conditions>  
      <Setter Property="Background" Value="#FF6CAFF1"/> 
     </MultiDataTrigger> 
     ... 
    </Style.Triggers> 
</Style> 

當我運行此,我m得到ArgumentException:鍵不能爲空。

我該如何解決這個問題?

+0

可能是與此相關的問題:http://stackoverflow.com/questions/2189131/vs2008-xaml-設計師異常關鍵不能-是無效時,使用默認的樣式-FR –

回答

1

隨着MultiTrigger您使用PropertyMultiDataTrigger您使用Binding,你不能將它們合併。因此,改變

<Condition Property="IsSelected" 

<Condition Binding="{Binding RelativeSource={RelativeSource Self}, 
          Path=IsSelected}" 

,它應該工作

<Style TargetType="DataGridCell" x:Key="ActiveCellStyle"> 
    <Setter Property="Foreground" Value="Black"/> 
     <Style.Triggers> 
      <MultiDataTrigger> 
       <MultiDataTrigger.Conditions> 
        <Condition Binding="{Binding Type}" Value="0"/> 
        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, 
               Path=IsSelected}" 
             Value="False"/> 
       </MultiDataTrigger.Conditions> 
       <Setter Property="Background" Value="#FFDFE6ED"/> 
      </MultiDataTrigger> 
      <MultiDataTrigger> 
       <MultiDataTrigger.Conditions> 
       <Condition Binding="{Binding Type}" Value="0"/> 
       <Condition Binding="{Binding RelativeSource={RelativeSource Self}, 
              Path=IsSelected}" 
          Value="True"/> 
      </MultiDataTrigger.Conditions> 
      <Setter Property="Background" Value="#FF6CAFF1"/> 
     </MultiDataTrigger> 
    </Style.Triggers> 
</Style>