我想在选中的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中这很容易
如何选择第一行?
为什么选择颜色有问题?
答案 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));