如何更改Xceed RowSelectorPane的背景颜色

时间:2012-12-05 22:45:47

标签: wpf background xceed-datagrid

我正在使用Xceed数据网格,我正在尝试更改RowSelectorPane背景颜色。我试图在XAML中执行此操作,但它会给我一个编译器错误,指出它无法创建我的数据网格控件。任何建议都将不胜感激。

<xcdg:DataGridControl Background="Transparent" Name="dgControl" SelectionUnit="Cell" >
    <!--<xcdg:RowSelectorPane Background="Transparent" />-->
</xcdg:DataGridControl>

1 个答案:

答案 0 :(得分:3)

更新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本身。不幸的是,这不是风格。 有两个选项:

  1. 按照Xceed论坛的建议重写TableViewScrollViewer controltemplate。但是,对于xaml的大部分内容来说,这是繁琐的复制粘贴工作,并且要改变那些你想让它看起来很小的部分。

  2. 或者下面的小黑客:

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

相关问题