Entwickler-Ecke
WPF / Silverlight - Elemente des DataGrids unterschiedlich einfärben?
BlackMatrix - Mi 24.10.12 03:14
Titel: Elemente des DataGrids unterschiedlich einfärben?
Guten Abend,
Ich bin noch ein Neuling in Sachen WPF und Datenbindung. Mein Problem ist folgendes. Ich fülle mein DataGrid zur Laufzeit (Programmstart) mit einem binären Serialisierer. Nun sollen die Rows (oder z.B. die Schriftfarbe) meiner Objekte im DataGrid unterschiedlich eingefärbt werden. Die Objekte haben ein Enum als Eigenschaft. Nun bekomme ich es leider nicht hin, dieses Eigenschaft im XAMl-Code meinem ValueConverter zu übergeben.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| [ValueConversion(typeof(MyEnum), typeof(Brush))] public class MyEnumConverter : IValueConverter } public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { }
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotSupportedException(); } } |
Nun habe ich folgendes im XAML Code geschrieben:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9:
| <Window x:Class="MyApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:MyApp" Title="MyApp" Height="350" Width="525" Closing="WindowClosing"> <Window.Resources> <local:MyEnumConverter x:Key="myEnumConverter "> </local:MyEnumConverter > </Window.Resources> |
Und hier fehlt nun wahrscheinlich der richtige Code:
XML-Daten
1: 2: 3:
| <DataGrid Name="dataGrid"> <DataGridRow Binding="{Binding Path=MyEnum}"></DataGridRow> </DataGrid> |
Der Converter (objekt: myEnumConverter), die Eigenschaft (MyEnum) und das gebundende Objekt muss in den XAML Code noch rein. Kann mir das jemand erläutern?
Danke euch.
Liebe Grüße.
Moderiert von
Christian S.: C#- durch XML-Tags ersetzt
daeve - Mi 24.10.12 19:17
Hallo
Du hast ja oben den Converter angegeben in den Resources jetzt musst du aber deinem Datagrid auch noch einen Converter angeben...
z.B Converter="{StaticResource myConverter, ConverterParameter=myParameter}"
gruss David
BlackMatrix - Mi 24.10.12 23:15
Also prinzipiell ist es erstmal richtig das so mit dem Converter zu lösen?
Mir stellt sich vorallem die Frage, wie kann man meiner Converterklasse die Eigenschaft, des zur Laufzeit gebunden Objekts, MyEnum übergeben?
Also wie drückt man in XAML Code aus, nimm das an die Row gebundene Objekt und davon die Eigenschaft MyEnum.
Abhängig von dieser Eigenschaft färbst du z.B. die Hintergrundfarbe der Row.
daeve - Do 25.10.12 12:54
Ich würde das mit einem Event lösen, sobald sich der Inhalt ändert...
Der Converter ist soviel ich weis für ein gebundenes Propertie da. ( int zu string oder der gleichen )
Wenn du das mit XAML machen möchtest, wäre der Weg ein Propertie zu definieren und dieses an eine Row zu binden ( nur für die Farbe )
im Converter wählst du dann die Farbe aus...
Aber einfacher und mit weniger Code ist diese lösung nicht.
BlackMatrix - Fr 26.10.12 01:57
Mein Objekt, welches an die Row gebunden ist, hat eine Property. Das Einzige ist eben, dass die Bindung erst zur Laufzeit erfolgt und ich nun im XAMl Code ausdrücken muss, dass die Property des gebundenen Objekts an den Converter weitergegeben wird.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!