WPF DataGrid行和列样式问题

时间:2011-05-25 03:17:33

标签: wpf datagrid

我需要突出显示datagrid的MouseOver行,这种风格似乎很容易:

<Style TargetType="DataGridRow">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="Green"/>
        </Trigger>
    </Style.Triggers>
</Style>

问题是我也有一些样式用于定义为:

的一些只读单元格
<Style TargetType="DataGridCell">
    <Style.Triggers>
        <Trigger Property="IsReadOnly" Value="True">
            <Setter Property="Background" Value="LightGoldenrodYellow"/>
        </Trigger>
    </Style.Triggers>
</Style>

因此,那些只读单元格不会获得MouseOver背景。我该如何解决这个冲突?非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这不是冲突。 MouseOver事件旨在用于普通行和单元格,而不是只读。

您应该为此问题添加MultiTrigger。

样品:

  <MultiTrigger>
    <MultiTrigger.Conditions>
      <Condition Property="IsReadOnly" Value="true" />
      <Condition Property="IsMouseOver" Value="true" />
    </MultiTrigger.Conditions>
    <Setter Property="Background" Value="Green"/>
  </MultiTrigger>

该代码对DataGridCell的样式有效。完成的代码示例将是:

<Style TargetType="DataGridCell">    
<Style.Triggers>        
      <MultiTrigger>
        <MultiTrigger.Conditions>
          <Condition Property="IsReadOnly" Value="true" />
          <Condition Property="IsMouseOver" Value="true" />
        </MultiTrigger.Conditions>
        <Setter Property="Background" Value="Green"/>
      </MultiTrigger>
</Style.Triggers>
</Style>