不会更改Datagrid中的颜色选定行

时间:2015-09-29 07:30:22

标签: c# wpf datagrid

我想在选中的Datagrid 5行中加载窗口

我的代码,但颜色不会改变

DataGridRow row = (DataGridRow)DataGridService.ItemContainerGenerator.ContainerFromIndex(5);
                object item = DataGridService.Items[5];
                DataGridService.SelectedItem = item;

                DataGridService.ScrollIntoView(item);
                row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));

的Xaml

<DataGrid.Resources>
   <SolidColorBrush x:Key="SelectionColorKey" Color="Red"/>
      <Style TargetType="DataGridRow">
          <Style.Resources>
             <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="{Binding Source={StaticResource SelectionColorKey}, Path=Color}"/>
          </Style.Resources>
      </Style>
</DataGrid.Resources>

可能是我不正确的制定问题。我需要在加载窗口,背景行5是红色,焦点是5行

不起作用

 DataGridService.SelectedItem = DataGridService.Items[5];

奇怪的是在Winforms中这很容易

如何选择第一行?

为什么选择颜色有问题?

2 个答案:

答案 0 :(得分:1)

您正在定义一种风格,但却没有采用这种风格做任何事情。您必须定义一些Setter来设置样式对象的属性。

这样的事情:

<DataGrid.Resources>
    <Style TargetType="DataGridRow">
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="Red"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</DataGrid.Resources>

答案 1 :(得分:0)

我找到了解决方案,有必要将重点放在Datagrid

DataGridService.Focus();
            DataGridRow row = (DataGridRow)DataGridService.ItemContainerGenerator.ContainerFromIndex(100);
            object item = DataGridService.Items[100];
            DataGridService.SelectedItem = item;


            DataGridService.ScrollIntoView(item);
            row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));