Как изменить цвет фона Xceed RowSelectorPane
Я использую сетку данных Xceed и пытаюсь изменить цвет фона RowSelectorPane. Я попытался сделать это в XAML, но это привело бы к ошибке компилятора о том, что он не может создать мой элемент управления сеткой данных. Любой совет будет принята с благодарностью.
<xcdg:DataGridControl Background="Transparent" Name="dgControl" SelectionUnit="Cell" >
<!--<xcdg:RowSelectorPane Background="Transparent" />-->
</xcdg:DataGridControl>
1 ответ
ОБНОВЛЕНИЕ 2: просматривая документацию Xceed и форумы Xceed, я обнаружил, что вы должны установить RowSelectorStyle для каждого DataRow.
<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 Вы правы, я пропустил детали за пределами секции строк: сама панель выбора строк. К сожалению, это не в стиле. Есть 2 варианта:
Перепишите шаблон элемента управления TableViewScrollViewer, как предложено на форуме Xceed. Но это утомительное копирование и вставка больших частей 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...>