更新 2:浏览 Xceed 文档和 Xceed 论坛我发现您必须在每个 DataRow 上设置 RowSelectorStyle。
<Grid.Resources>
<Style x:Key="mySelectorStyle" TargetType="{x:Type xcdg:RowSelector}">
<Setter Property="Background" Value="LightGreen"/>
<Setter Property="BorderBrush" Value="DarkGreen"/>
</Style>
<Style TargetType="{x:Type xcdg:DataRow}">
<Setter Property="xcdg:RowSelector.RowSelectorStyle"
Value="{StaticResource mySelectorStyle}" />
</Style>
</Grid.Resources>
更新 3
你是对的,我错过了行部分之外的部分:rowselectorpane 本身。不幸的是,这不是可样式化的。有2个选项:
按照 Xceed 论坛上的建议重写 TableViewScrollViewer 控件模板。但这是对大部分 xaml 进行繁琐的复制粘贴工作,并更改您想要让它看起来像您的方式的那一小部分。
或以下小技巧:
private void dataGridLoaded(object sender, RoutedEventArgs e)
{
var rowSelectorPane = TreeHelper.FindVisualChild<RowSelectorPane>(_dataGrid);
if (rowSelectorPane != null)
{
rowSelectorPane.Background = Brushes.LightGreen;
}
}
public static class TreeHelper
{
public static TChildItem FindVisualChild<TChildItem>(DependencyObject obj) where TChildItem : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is TChildItem)
return (TChildItem)child;
TChildItem childOfChild = FindVisualChild<TChildItem>(child);
if (childOfChild != null)
return childOfChild;
}
return null;
}
}
xml:
<xcdg:DataGridControl ItemsSource="{Binding}" Name="_dataGrid" Loaded="dataGridLoaded" etc...>