【问题标题】:WPF DataGrid row and column Style questionWPF DataGrid 行列样式问题
【发布时间】:2011-05-25 03:17:33
【问题描述】:

我需要突出显示数据网格的 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 背景。我该如何解决这个冲突?非常感谢您的帮助。

【问题讨论】:

  • 编码风格是指编写代码的风格。它也不影响 UI 的样式。请参阅this clarification
  • @Monster Truck:我不明白你在说什么。我说的是编码风格吗?
  • 是的,您已将其标记为“编码风格”。我编辑了您的帖子并将其删除。

标签: wpf datagrid


【解决方案1】:

这不是冲突。 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>

【讨论】:

  • 我刚刚尝试了你的想法,我得到一个编译器错误:“在类型'System.Windows.Controls.DataGridRow'上找不到样式属性'IsReadOnly'。如何解决这个问题?跨度>
  • 我认为您应该在 DataGridCell 的样式中取出上述代码。我将编辑和更新上面的代码。
  • 我不认为将这个触发器放在 DataGridCell 上会起作用,因为它只会在鼠标悬停时突出显示当前单元格,而不是整行。
  • 您不能对 DataGridRow 执行此操作,因为 DataGridRow 没有 ReadOnly 属性。但是您可以通过将属性 Enabled 设置为 false 来禁用 DataGridRow,然后使用上面的 MultiTrigger 制作样式。
  • 禁用行与只读不同。禁用时,单击行不会使其被选中。我对 DataGridCells 有同样的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 2011-02-20
  • 2010-12-16
  • 2013-05-12
  • 2019-03-26
  • 2011-05-31
相关资源
最近更新 更多