2011-04-12 7 views
1

코드 비헤이비어에서 행 DataGrid의 배경색을 변경하려고합니다. 바인딩 속성을 사용하고 있습니다. 코드에서 변경된 사항을 볼 수 있지만 표시 될 때 배경색은 변경되지 않습니다. 나는 스크롤Datagrid 행 배경색

답변

0

헤더 색상 변화의 I 일부 재생할 때 :

With datagrid1 
.ColumnHeadersDefaultCellStyle.Font = New Font("Arial", 12.0F, FontStyle.Bold, GraphicsUnit.Pixel) 
.ColumnHeadersDefaultCellStyle.BackColor = Color.GreenYellow 
.EnableHeadersVisualStyles = False 
End With 

행과 배경 같은 색 변경

With datagrid1 
.RowsDefaultCellStyle.BackColor = Color.Beige 
.AlternatingRowsDefaultCellStyle.BackColor = Color.FromArgb(224, 255, 179) 
.DefaultCellStyle.Font = New Font("Arial", 12.0F, FontStyle.Regular, GraphicsUnit.Pixel) 
End With 

변화. 나는 그것의 도움을 희망하는

+0

인증 조건에 따라 변경하려면 인증 행이 필요합니다. – user609447

0

전체 행 :

datagrid1.Rows(0).DefaultCellStyle.BackColor = Color.Beige 

전체 칼럼 : 조건과 내가 샘플에서는 CustomClass을 만들어

If (dataset1.Tables(0).Rows(1)(0) == "") Then 
    datagrid1.Rows(0).Cells(1).Style.BackColor = Color.Red 
End if 
0

특정 세포로

datagrid1.Columns(0).DefaultCellStyle.BackColor = Color.Yellow 

:

(210)

는 목록을 만든 :

<sdk:DataGrid ItemsSource="{Binding MyList}" RowStyle="{StaticResource Style1}"> 
      <sdk:DataGrid.Columns> 
       <sdk:DataGridTextColumn Binding="{Binding PropertyToBeWatched}" Header="Property1"/> 
      </sdk:DataGrid.Columns> 
     </sdk:DataGrid> 
다음

자원 :

xmlns:sdk1="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data" 
      xmlns:sdk="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 


<SolidColorBrush x:Key="Red" Color="#FFFF0000" /> 
     <SolidColorBrush x:Key="Green" Color="#FF00FF00" />  

     <Style x:Key="Style1" TargetType="sdk:DataGridRow"> 
      <Setter Property="IsTabStop" Value="False"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="sdk:DataGridRow"> 
         <Grid Background="{Binding Converter={StaticResource Test}}"> 
          <sdk1:DataGridFrozenGrid x:Name="Root"> 
           <sdk1:DataGridFrozenGrid.Resources> 
            <Storyboard x:Key="DetailsVisibleTransition"> 
             <DoubleAnimation Duration="00:00:0.1" Storyboard.TargetProperty="ContentHeight" Storyboard.TargetName="DetailsPresenter"/> 
            </Storyboard> 
           </sdk1:DataGridFrozenGrid.Resources> 
              <sdk1:DataGridFrozenGrid.ColumnDefinitions> 
           <ColumnDefinition Width="Auto"/> 
           <ColumnDefinition/> 
          </sdk1:DataGridFrozenGrid.ColumnDefinitions> 
           <sdk1:DataGridFrozenGrid.RowDefinitions> 
            <RowDefinition/> 
            <RowDefinition Height="Auto"/> 
            <RowDefinition Height="Auto"/> 
           </sdk1:DataGridFrozenGrid.RowDefinitions> 
                                                        <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="CommonStates"> 
            <VisualState x:Name="Normal"/> 
            <VisualState x:Name="NormalAlternatingRow"> 
             <Storyboard> 
              <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundRectangle"/> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="MouseOver"> 
             <Storyboard> 
              <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundRectangle"/> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="NormalSelected"> 
             <Storyboard> 
              <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundRectangle"/> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="MouseOverSelected"> 
             <Storyboard> 
              <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundRectangle"/> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="UnfocusedSelected"> 
             <Storyboard> 
              <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundRectangle"/> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="UnfocusedEditing"/> 
            <VisualState x:Name="NormalEditing"/> 
            <VisualState x:Name="MouseOverUnfocusedEditing"/> 
            <VisualState x:Name="MouseOverEditing"/> 
            <VisualState x:Name="MouseOverUnfocusedSelected"/> 
           </VisualStateGroup> 
           <VisualStateGroup x:Name="ValidationStates"> 
            <VisualState x:Name="Valid"/> 
            <VisualState x:Name="Invalid"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Visibility" Storyboard.TargetName="BackgroundRectangle"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> 
              </ObjectAnimationUsingKeyFrames> 
              <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="InvalidVisualElement"/> 
             </Storyboard> 
            </VisualState> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
           <Rectangle x:Name="BackgroundRectangle" Grid.ColumnSpan="2" Fill="Red" Opacity="0" Grid.RowSpan="2"/> 
           <Rectangle x:Name="InvalidVisualElement" Grid.ColumnSpan="2" Fill="#FFF7D8DB" Opacity="0" Grid.RowSpan="2"/> 
           <sdk1:DataGridRowHeader x:Name="RowHeader" sdk1:DataGridFrozenGrid.IsFrozen="True" Grid.RowSpan="3"/> 
           <sdk1:DataGridCellsPresenter x:Name="CellsPresenter" Grid.Column="1" sdk1:DataGridFrozenGrid.IsFrozen="True"/> 
           <sdk1:DataGridDetailsPresenter x:Name="DetailsPresenter" Grid.Column="1" Grid.Row="1"/> 
           <Rectangle x:Name="BottomGridLine" Grid.Column="1" HorizontalAlignment="Stretch" Height="1" Grid.Row="2"/> 
          </sdk1:DataGridFrozenGrid> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

이이 컨버터를위한 것입니다

public class RowStyleConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      if (((CustomClass)value).PropertyToBeWatched == "1") 
       return App.Current.Resources["Red"] as SolidColorBrush; 
      else 
       return App.Current.Resources["Green"] as SolidColorBrush; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new System.NotImplementedException(); 
     } 
    } 
그런 다음 데이터 격자를 생성
MyList = new ObservableCollection<CustomClass>(); 
      MyList.Add(new CustomClass() { PropertyToBeWatched = "1"}); 
      MyList.Add(new CustomClass() { PropertyToBeWatched = "2" }); 
      MyList.Add(new CustomClass() { PropertyToBeWatched = "2" }); 
      MyList.Add(new CustomClass() { PropertyToBeWatched = "2" }); 

기본적으로 "PropertyToBeWatched"속성을 기반으로 솔리드 컬러 브러시를 가져오고 설정합니다.

희망 하시려면