WPF DataGrid行和列样式问题

WPF DataGrid行和列样式问题,wpf,datagrid,Wpf,Datagrid,我需要突出显示datagrid的MouseOver行,这种样式似乎很容易: <Style TargetType="DataGridRow"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Green"/> </Trigger&g

我需要突出显示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事件用于非只读的正常行和单元格

您应该为此问题添加多触发器

样本:

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


编码样式是指编写代码的样式。它不会影响UI的样式。“请看!”怪物卡车:我不明白你在说什么。我说的是编码风格吗?是的,你给它贴上了“编码风格”的标签。我编辑了你的帖子并将其删除。我刚刚尝试了你的想法,但遇到了一个编译器错误:在类型“System.Windows.Controls.DataGridRow”上找不到样式属性“IsReadOnly”。如何解决这个问题?我认为您应该在DataGridCell的样式中写出上面的代码。我将编辑和更新上面的代码。我不认为将此触发器放在DataGridCell上会起作用,因为它只在鼠标上方突出显示当前单元格,而不是整行。DataGridRow不能这样做,因为DataGridRow没有ReadOnly属性。但是您可以通过将属性Enabled设置为false来禁用DataGridRow,然后使用上面的MultiTrigger生成样式。禁用行与只读不同。禁用时,单击行不会使其处于选中状态。对于DataGridCells,我也有同样的问题。