2013-03-26 2 views
16

모두 저는 WPF가 처음입니다. 나는 이것에 대한 답을 찾기 위해 주위를 둘러 보았지만, 내가 찾은 것은 칼럼이 아닌 실행시에 색이있는 행을 만드는 방법이다. 예를 들어 다음과 같은 질문 :런타임에 WPF DataGrid의 전체 열의 배경색을 변경하십시오.

  1. Change WPF Datagrid Row Color

  2. How do I programatically change datagrid row color in WPF?

  3. Programmatically assigning a color to a row in DataGrid

  4. Change DataGrid cell colour based on values

등.

MSDN DataGrid pages에서 CellStyle 속성을 보았습니다.하지만 이것에 대한 검색에도 불구하고 사용법이 전혀 분명하지 않습니다.

런타임시 전체 열의 배경색을 변경하는 방법은 무엇입니까?

감사합니다.

답변

20

내가 작동하게하는 유일한 방법은 (AutoGenerate를 사용하지 않음으로써) 직접 열을 설정하는 것입니다.

<Window x:Class="WpfApplication1.MainWindow" ...> 
<Window.Resources> 
    <SolidColorBrush x:Key="clBr" Color="White" /> 
</Window.Resources> 
... 

열 : 각 열 CellStyle을 설정하고 Window.Resources에서 선언 할 수 정적 리소스에 대한 배경을 바인드해야 다음

<DataGrid x:Name="Frid" ItemsSource="{Binding Path=.}"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="First Name" 
           Binding="{Binding Path=FirstName}"> 

      </DataGridTextColumn> 

      <DataGridTextColumn Header="Last Name" 
           Binding="{Binding Path=LastName}"> 

      </DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

이렇게하려면 우선 열을 정의하는 것입니다 :

   <DataGridTextColumn Header="First Name" 
            Binding="{Binding Path=FirstName}"> 
       <DataGridTextColumn.CellStyle> 
        <Style TargetType="DataGridCell"> 
         <Setter Property="Background" 
           Value="{StaticResource clBr}" /> 
        </Style> 
       </DataGridTextColumn.CellStyle> 
      </DataGridTextColumn> 

다음 코드 또는 xaml 조작으로 정적 리소스를 조작 할 수 있습니다.

희망이 있습니다.

+0

시간 내 주셔서 감사합니다.하지만 런타임에이 열을 수행하는 방법을 알고 싶습니다. 열이 가변적이며 런타임에 만들어졌습니다. 모든 최선을 ... – MoonKnight

+0

나는 그것이 실행 시간에 완료되고 싶습니다. 나는 윈도우에서 loadable.so 어떻게 할 수있는 datatable 바인딩 DataGrid 오전? –

+0

나는 당신이 당신의 대답에 지시 한대로 행동했습니다. 런타임 중에 프로그래밍 방식으로 어떻게 변경할 수 있습니까? – Kokombads

11

A는 오래된 비트하지만, 여기에 당신이 (자동 생성 컬럼에 대한) 프로그램이 작업을 수행 할 수있는 방법입니다 :

private void dgvMailingList_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
{ 
    e.Column.CellStyle = new Style(typeof(DataGridCell)); 
    e.Column.CellStyle.Setters.Add(new Setter(DataGridCell.BackgroundProperty, new SolidColorBrush(Colors.LightBlue))); 
} 

같은 접근 방식이 너무 비 자동 생성 컬럼에 적용 할 수 있습니다.

관련 문제