Hi.
Eine Anfänger-Frage:
Ich habe in einem DataGrid ca. 50 Columns der Art
<DataGridTextColumn IsReadOnly="True" Header="Spalte1" Binding="{Binding Wert1}" />
<DataGridTextColumn IsReadOnly="True" Header="Spalte2" Binding="{Binding Wert2}" />
<DataGridTextColumn IsReadOnly="True" Header="Spalte3" Binding="{Binding Wert3}" />
<DataGridTextColumn IsReadOnly="True" Header="Spalte4" Binding="{Binding Wert4}" />
Nun möchte ich einige der Spalten farblich einfärben (Background="Red") , so dass es im Prinzip so wäre:
<DataGridTextColumn IsReadOnly="True" Header="Spalte1" Binding="{Binding Wert1}" />
<DataGridTextColumn IsReadOnly="True" Header="Spalte2" Binding="{Binding Wert2}" />
<DataGridTextColumn IsReadOnly="True" Header="Spalte3" Binding="{Binding Wert3}" Background="Red" />
<DataGridTextColumn IsReadOnly="True" Header="Spalte4" Binding="{Binding Wert4}" Background="Red" />
Leider geht das so nicht.
Ich will aber NICHT für jede der betreffenden Spalten das aufwändig mit Sub-Elementen machen, sondern ähnlich wie im CSS eine class="RoterHintergrund" hinterlegen.
Um dann (im Prinzip zu sagen):
<DataGridTextColumn IsReadOnly="True" Header="Spalte3" Binding="{Binding Wert2}" HintergrundClass="RoterHintergrund" />
Wie geht das?
Danke!
M.
Dies geht mittels des CellStyle, s. z.B. Setting DataGrid column's Background Color in XAML? oder auch mittels Binding WPF Datagrid Background abhängig von ausgeblendeter Spalte:
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Background" Value="Red" />
</Style>
</DataGridTextColumn.CellStyle>
Falls du auch noch Unterschiede bzgl. Bearbeitungsmodus machen möchtest, dann brauchst du dafür EditingElementStyle
und ElementStyle
.
Damit du den Style nur einmalig definieren mußt, kannst du ihn als Ressource ablegen, s. Styles and templates (WPF .NET) (unter "Styles").
Edit: Hier noch eine weiterer Artikel dazu: WPF Styles benutzen
Siehe dazu auch [Artikel] MVVM und DataBinding, 4. Kapitel: Styles und Trigger.
Weeks of programming can save you hours of planning