如何通过单击数据网格单元来更改颜色(或应用样式)?

时间:2016-09-13 15:12:02

标签: wpf

我希望有以下行为:

  1. 通过单击数据网格单元格来更改颜色(或应用样式)
  2. 第二次单击单元格后,将样式切换回来。
  3. 当然,XAML方法更可取:)

    你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

第一个是我们假设只读单元格的示例(否则与要编辑的单击存在冲突)。它还需要初步点击以选择单元格。

在XAML资源中

        <DataGrid.Resources>
            <Style TargetType="{x:Type DataGridCell}">
                <EventSetter Event="MouseDown" Handler="DataGridCell_MouseDown"/>
            </Style>
        </DataGrid.Resources>

使用处理程序后面的代码

    private void DataGridCell_MouseDown(object sender, MouseButtonEventArgs e)
    {
        DataGridCell cell = sender as DataGridCell;

        if (cell != null)
        {
            cell.Background = cell.Background.Equals( Brushes.Green) ? Brushes.White : Brushes.Green;
            cell.Foreground = Brushes.Black;
        }
    }

如果你不喜欢上述限制,只需使用预览,以便在其他处理程序之前获得点击...

<EventSetter Event="PreviewMouseDown" Handler="DataGridCell_MouseDown"/>

无论如何,排序后背景颜色可能会丢失,因此您可能需要扩展此解决方案。