【问题标题】:WPF DataGrid, selected row color on DataGrid SelectedItem Change in MVVMWPF DataGrid,DataGrid SelectedItem 上的选定行颜色 MVVM 中的更改
【发布时间】:2014-06-08 17:38:58
【问题描述】:

我有一个 WPF DataGrid,当我通过集合添加新项目时,我在 MVVM 中使用 C# 选择新项目(行)

// Adding the new item (which will create a new row)
ItemSourceCollection.Add(object);

// The itemSource would have refreshed, so now assign the SelectedItem of the grid
SelectedItem = ItemSourceCollection.Where(x => x.Id == Id).FirstOrDefault();

这在选择行时效果很好。但是,行颜色与用户实际单击行时的颜色不匹配。

所选行颜色的 xaml

<DataGrid.Resource>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" 
               Color="#FF0000"/>
 </DataGrid.Resource>

那么当通过代码将新行添加到集合中时,是否可以使用此颜色?

【问题讨论】:

  • DataGrid 有焦点吗?你试过myDataGrid.Focus()吗?
  • 上面的代码在 VIewModel 中,所以我无法访问 DataGrid 控件本身。不过,我不介意去看风景,所以我会从那个角度看一看
  • 您可以在视图中设置焦点,但选定的项目在焦点和不焦点时会有不同的颜色
  • 哦对了,我不知道,干杯,那我该如何设置SelectedItem的颜色呢?干杯!
  • 您使用的是 .NET 4.5 吗?

标签: c# wpf xaml mvvm datagrid


【解决方案1】:

问题是由于所选项目何时具有焦点和何时没有焦点而存在不同的画笔。所以你要么需要设置焦点,要么添加这个

<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#FF0000"/>

DataGrid.Resources。如果您将使用 .NET 4.5,则有专用的画笔,您需要添加

<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#FF0000"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    相关资源
    最近更新 更多