2012-12-05 80 views
1

我正在使用Xceed數據網格,並試圖更改RowSelectorPane背景色。我試圖在XAML中這樣做,但它會給我一個編譯器錯誤,指出它不能創建我的數據網格控件。任何建議將不勝感激。如何更改Xceed RowSelectorPane的背景色

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

回答

3

更新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 你是對的,我錯過了行部分外的部分:rowselectorpane本身。不幸的是,這是不可風格的。 有2個選項:

  1. 重寫TableViewScrollViewer的ControlTemplate的Xceed論壇的建議。但這是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...>

+0

這似乎在RowSelectorPane一半工作,因爲它的數據行只顏色。那麼在ColumnManagerCells的區域周圍或數據尚未設置的區域呢?當然,我非常感謝你的幫助,如果這些不能修改,那麼這將不得不做 – Seb

+0

看起來我有很多工作在我面前。非常感謝你的幫助。 – Seb