2013-03-26 16 views
16

olarak değiştirin. Hepsi, WPF'ye nispeten yeniyim. Bunun cevabı için arama yaptım, ancak bulduğum tek şey, çalışma zamanı sütunlarında renk satırlarının nasıl yapıldığını; örneğin aşağıdaki hususlar:WPF DataGrid'in Tüm Sütunun Arka Plan Rengi'ni RunTime

  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

ve diğ.

MSDN DataGrid pages üzerinde CellStyle özelliğini gördüm, ancak bunun etrafındaki aramalara rağmen kullanımı hiç de açık değil.

Çalışma zamanında tüm bir sütunun arka plan rengini nasıl değiştirebilirim?

Zaman ayırdığınız için teşekkür ederiz.

cevap

20

Çalıştırmamın tek yolu, sütunları kendim belirleyerek (AutoGenerate kullanarak değil).

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

Sütunlar: Her sütun CellStyle ayarlamak ve Window.Resources de ilan edebilir statik kaynağa Arka Plan bağlamak gerekir Sonra

<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> 

: Yani yapılması gereken ilk şey sütunları tanımlamak olduğu :

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

o zaman sadece kodu ya xaml manipülasyon yoluyla statik kaynak manipüle edebilir.

Yardım edin.

+0

Zaman ayırdığınız için teşekkürler, ancak sahip olduğum sütunların değişken olduğu ve çalışma zamanında oluşturulduğu için bunu çalışma zamanında nasıl yapacağımı bilmek istiyorum. En iyisi ... – MoonKnight

+0

Çalışma zamanında yapılmasını istiyorum. Ben pencere load.so databot ile datafrid bağlanıyorum nasıl yapılabilir? –

+0

Cevabınızda belirttiğiniz şeyi yaptım, işe yaradı. ancak çalışma zamanı boyunca programatik olarak nasıl değiştirebilirim? – Kokombads

11

bir eski bit, ancak burada (AutoGen sütunları için) programlı bunu nasıl geçerli:

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))); 
} 

aynı yaklaşım çok olmayan AutoGen sütunlara uygulanabilir.

İlgili konular