2009-07-17 7 views
1

In meinem XAML-Code habe ich die Height-Eigenschaft eines Steuerelements an die ActualHeight für seine übergeordneten Steuerelement gebunden. Weil ich einen Offset von dem ursprünglichen Wert, den ich verwende, und IValueConverter berechnen muss.WPF: Steuerbindung - Trigger IValueConverter von C# -Code

Height="{Binding ElementName=MainCanvas, Path=ActualHeight, Converter={StaticResource adjustVerteilung} , ConverterParameter= 12}" 

Das funktioniert soweit.

Nach einem Ereignis ändert sich die Formel im ValueConverter und erzeugt eine andere Ausgabe. Aber die Steuerelemente werden nur aktualisiert und ausgerichtet, nachdem ich die Größe meines Fensters geändert habe. Gibt es da irgendeine Möglichkeit, dem Steuerelement mitzuteilen (aus dem C# -Code), sich zu aktualisieren und einen neuen Wert vom ValueConverter zu bekommen?

Antwort

1

Wenn Sie UpdateSourceTrigger = PropertyChanged zu Ihrer Bindung hinzufügen, sollte es an den Wert neu binden, sobald sich die tatsächliche Höhe ändert, anstatt nach der Fenstergröße und der Aktualisierung der Bindungen durch MainCanvas.

0

Ich denke, dass Sie Wert ändern möchten, auch wenn ActualHeight nicht ändert. AFAIK die ValueConverter-Funktion ist nicht entworfen, um so etwas zu tun.

Sie sollten etwas anderes versuchen. Wenn es tatsächlich die beobachtete Höhe ist, die Sie aktualisieren möchten, wenn Ihr "Ereignis" eintritt, können Sie vielleicht ein benutzerdefiniertes Feld erstellen, dessen "eine Eigenschaft" irgendwie an Ihr Ereignis gebunden ist. Wenn dann "Irgendein Ereignis" eintritt, können Sie die beobachtete Höhe der Kontrolle (n) ändern, die innerhalb des Panels liegen.