2012-12-05 2 views
1

Xceed DataGrid를 사용하고 있는데 RowSelectorPane 배경색을 변경하려고합니다. XAML에서이 작업을 시도했지만 내 DataGrid 컨트롤을 만들 수 없다는 컴파일러 오류가 발생합니다. 모든 조언을 크게 주시면 감사하겠습니다.Xceed RowSelectorPane의 배경색을 변경하는 방법

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

답변

3

업데이트 2 다음 Xceed 문서와 난 당신이 모든의 DataRow에 RowSelectorStyle을 설정해야합니다 것을 발견 Xceed의 포럼을 통해 찾아.

 <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 자체. 불행하게도 그것은 스타일화할 수 없습니다. Xceed 포럼에 제안

  1. 가 TableViewScrollViewer의의 ControlTemplate을 다시 작성

    : 2 개 가지 옵션이 있습니다. 그러나 이것은 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

관련 문제