更新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;
}
}
Xaml:
<xcdg:DataGridControl ItemsSource="{Binding}" Name="_dataGrid" Loaded="dataGridLoaded" etc...>