Hallo,
Ich hoffe der Titel ist in Ordnung - das Problem ist (für mich) schwer in nur ein paar Worte zu fassen.
Ansonsten bitte ich um Vorschläge für einen besseren Titel
Ich bin ein ziemlicher Neuling was C# aber vor allem auch WPF angeht und habe eine Frage zu Bindings.
Auf meinem Formular habe ich eine ListView. Im Code (nicht im xaml) weise ich der ListView zur Laufzeit als Datacontext eine DataView zu und erstelle ein CellTemplate dafür.
Ich möchte nun dass alle Zeilen wo die RowError-Property des entsprechenden DataRow-Objekts nicht leer ist fett sind.
Dafür wollte ich die FontWeight-Property des TextBlocks mit einem Converter an die RowError-Property binden.
(Der Converter konvertiert alles != "" in FontWeights.Bold, ansonsten FontWeights.Normal)
Code:
DataView dtv = Datatable.DefaultView; // Datatable ist mit Daten gefüllt, 1 Spalte "Wert"
// Dataview der Listview zuweisen
Binding bind = new Binding();
listview.SetBinding(ListView.ItemsSourceProperty, bind);
listview.DataContext = dtv;
// Textblock + Binding für Spalte "Wert" erzeugen
FrameworkElementFactory txtBlock= new FrameworkElementFactory(typeof(TextBlock));
txtBlock.SetBinding(TextBlock.TextProperty, new Binding("Wert"));
// FontWeight des Textblocks indirekt über Konverter an DataRow.RowError binden (<- das Problem)
Binding boldBind = new Binding();
boldBind.Converter = new WertToFontWeightConverter(); // Gibt FontWeights.Bold zurück für Werte != ""
boldBind.Path = new PropertyPath("???"); // <-- hier hab ich ja nur Zugriff auf die Spaltennamen der DataTable oder?
// Cell Template aus Textblock erzeugen...
DataTemplate tpl = new DataTemplate();
tpl.VisualTree = txtBlock;
// ... und der "Wert"-Spalte zuweisen
((GridView)listview.View).Columns[0].CellTemplate = tpl; // nicht schön, aber es ist nur ein Test!
Es würde mich freuen wenn mir da jmd. helfen könnte oder auch ggf. gute Alternativen zeigen könnte.
Crosspost:
http://www.entwickler-ecke.de/viewto...=695765#695765
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."