WPF Datagrid : On load, 选择当前项目(突出显示)

标签 wpf datagrid initialization selection highlighting

我有一个 WPF Datagrid 绑定(bind)到我的 ViewModel 中的一些属性

<DataGrid AutoGenerateColumns="False" Name="dataGrid" SelectionMode="Single"
          ItemsSource="{Binding ItemList}" SelectedItem="{Binding SelectedItem}">
...
</DataGrid>

当我的窗口加载和 Datagrid 也加载时,我设置了 SelectedItem它绑定(bind)得很好,但该行没有突出显示。当我单击一行时,该行突出显示,问题就解决了。

如何设置/触发 SelectedItem 的突出显示在加载/初始化的 DataGrid 中?

编辑:

它实际上是被选中的,因为我有一个小的选择单元格。只是突出显示的渲染不会触发。

enter image description here

最佳答案

我遇到了同样的“问题”,终于找到了一个很好的解决方案。正如您已经说过的,不是没有选择该行,而是它没有突出显示该行。如果您仔细观察,您会注意到,当您单击行中的任意位置(使用鼠标)时,它仍然不会突出显示该行,只有其中的单元格。

所以2个选项;

  • 创建代码以选择行
  • 的单元格
  • 或创建一个 Style.Trigger 以突出显示该行(这是我认为的最佳选择)。

  • 为此,请在 xaml 文件中的数据网格中添加如下内容:
                <DataGrid.RowStyle>
                    <Style TargetType="DataGridRow">
                        <Style.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter Property="Background" Value="DodgerBlue"/>
                                <Setter Property="Foreground" Value="White"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </DataGrid.RowStyle>
    

    希望能帮助到你!

    干杯,
    LTB

    关于WPF Datagrid : On load, 选择当前项目(突出显示),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5199717/

    相关文章:

    wpf - 检测何时在 DataGrid 中编辑行

    c# - 如何在我的情况下使用 mvvm 绑定(bind) DataGrid(ObservableCollection 内的 ObservableCollection)

    c++ - 无法访问 C++ 中全局变量的构造函数中的静态(非原始)成员

    swift - 类中属性的初始化,具体是惰性属性?

    c++ - 在 MSVC 编译器下使用最大成员初始化 union

    c# - XPS 文档中未反射(reflect)绑定(bind)值

    c# - 运行应用程序的用户的AppData文件夹

    c# - 使用属性... INotifyPropertyChanged

    wpf - MVVM方式使用不同的控件来编辑不同的对象

    c# - WPF DataGrid 删除 SelectedItems