Ich muss die StringFormat
einiger gebundener TextBlocks
zur Laufzeit basierend auf dem Einheitensystem ermitteln, das in dem zu bindenden Objekt identifiziert ist.
Ich habe einen Konverter mit einer Dependency-Eigenschaft, an die ich binden möchte. Der gebundene Wert wird beim Festlegen des Konvertierungsprozesses verwendet.
%Vor%Ich erkläre den Konverter
%Vor%und binden Sie den TextBlock
%Vor%Trotzdem erhalte ich den folgenden Fehler:
System.Windows.Data Error: 2: Das FrameworkElement oder FrameworkContentElement für das Zielelement kann nicht gefunden werden. BindingExpression: Pfad = IsMetric; Datenelement = null; Zielelement ist 'UnitConverter' (HashCode = 62641008); Zieleigenschaft ist 'IsMetric' (Typ 'Boolean')
Ich denke, das wird initialisiert, bevor ich den Datenkontext setze und daher gibt es nichts, an das ich die Eigenschaft IsMetric
binden könnte. Wie kann ich das gewünschte Ergebnis erzielen?
Vorausgesetzt, dass Breadth
und IsMetric
Eigenschaften desselben Datenobjekts sind, können Sie eine MultiBinding in Verbindung mit einem Multi-Value-Konverter :
mit einem Konverter wie diesem:
%Vor%Das Problem mit Ihrem Ansatz besteht darin, dass der UnitConverter, wenn er als Ressource deklariert ist, keinen DataContext hat und später auch nie einen bekommt.
Und noch eine wichtige Sache: Der ValueChanged
Callback für UnitConverter.IsMetric
ist Unsinn. Er setzt dieselbe Eigenschaft erneut, die gerade geändert wurde.
Tags und Links wpf c# data-binding ivalueconverter