1

Xceed データグリッドを使用していて、RowSelectorPane の背景色を変更しようとしています。XAML でこれを実行しようとしましたが、データグリッド コントロールを作成できないというコンパイラ エラーが発生しました。アドバイスをいただければ幸いです。

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

1 に答える 1

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自体。残念ながら、それはスタイリングできません。2つのオプションがあります:

  1. Xceedフォーラムで提案されているように、TableViewScrollViewerコントロールテンプレートを書き直します。しかし、これは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;
        }
    }
    

Xaml: <xcdg:DataGridControl ItemsSource="{Binding}" Name="_dataGrid" Loaded="dataGridLoaded" etc...>

于 2012-12-06T08:02:13.203 に答える