Ich verwende ein WPF-Gitter als Layout meines Fensters. Es hat zwei Spalten und eine beliebige Anzahl von Zeilen. Die erste Spalte wird speziell für Etiketten verwendet und die zweite Spalte wird für Benutzereingabefelder verwendet (z. B. TextBox, ComboBox usw.). Meine Anforderungen sind:
Ich habe den XAML unten versucht:
%Vor%Ich hatte gehofft, dass das Etikett der dritten Reihe, "Label, das nicht in 180 Einheiten passt", in etwas wie "Label, das gewonnen hat" gekürzt wird. Stattdessen wurde es an "Label That Will not" angeheftet, wobei die Hälfte des "t" fehlt.
Ich habe einen anderen Ansatz versucht, den ich irgendwo im Internet gefunden habe.
%Vor%Am Ende funktionierte es bei Expression Blend (manchmal ...), aber nicht beim Ausführen der Anwendung. Beim Ausführen verschwanden alle Etiketten vollständig. Ich habe durch das Überwachungsfenster gesehen, dass alle TextBlocks eine tatsächliche Breite von 0 haben, während die LabelColumn.ActualWidth gleich 80 ist.
Welche anderen Optionen gibt es?
Sie müssen die MinWidth
und MaxWidth
für den TextBlock festlegen, da das Festlegen von MinWidth
und MaxWidth
für Spaltendefinitionen beim Rendern nicht immer berücksichtigt wird.
Die Verwendung von ActualWidth
innerhalb von Bindungsausdrücken kann problematisch sein, da ActualWidth
während mehrerer Render-Durchläufe festgelegt wird und unvorhersehbare Ergebnisse liefern kann