Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   .NET-Sprachen (https://www.delphipraxis.net/82-net-sprachen/)
-   -   C# Listview - FontWeight an DataRow.RowError binden (https://www.delphipraxis.net/186322-listview-fontweight-datarow-rowerror-binden.html)

Neutral General 24. Aug 2015 10:45

Listview - FontWeight an DataRow.RowError binden
 
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

Neutral General 24. Aug 2015 12:17

AW: Listview - FontWeight an DataRow.RowError binden
 
Okay es war eigentlich einfach:

??? = Row.RowError

Es funktioniert jetzt, danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz