2010-02-10 4 views
21

Ich arbeite an einer WPF-Anwendung und kämpfe mit einem Datentrigger. Ich mag den Wert der Triggerbedingung auf ein Objekt binden, die ich habe:Verwenden der Bindung für die Value-Eigenschaft der DataTrigger-Bedingung

<DataTrigger Binding="{Binding Foo}" 
      Value="{Binding ElementName=AnotherElement, Path=Bar}">.. 

Aber ich bin nicht erlaubt, da es nicht möglich zu sein scheint Anbindungen für die Value-Eigenschaft zu verwenden. Ist es? Kann ich das irgendwie erreichen? Ich bekomme folgende Fehlermeldung:

A 'Binding' cannot be set on the 'Value' property of type 'DataTrigger'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.

Antwort

33

Nein, das ist nicht möglich. Wie die Fehlermeldung besagt, können nur Abhängigkeitseigenschaften Ziele von WPF-Bindungen sein, und DataTrigger.Value ist keine Abhängigkeitseigenschaft. Sie müssen also einen tatsächlichen Wert zuweisen.

Die Problemumgehung besteht darin, eine MultiBinding zu verwenden, deren untergeordnete Bindungen die zwei zu vergleichenden Bindungen sind, mit einem IMultiValueConverter, der true zurückgibt, wenn die beiden Eingaben gleich sind und false, wenn sie ungleich sind. Der DataTrigger kann dann das MultiBinding und einen Wert von True verwenden.

8

Um die Antwort zu erarbeiten: here ist ein Beispiel dafür, wie es gemacht wird.

Verwandte Themen