2016-10-10 4 views
1

Ich habe eine TextBox und ich versuche, der TextProperty-Binding im Code dahinter einen IValueConverter hinzuzufügen.Wie füge ich IValueConverter zu einer bestehenden Bindung hinzu

 var bindingExpression = TextBox.GetBindingExpression(TextBox.TextProperty); 
     if (bindingExpression != null && bindingExpression.ParentBinding.Converter == null) 
     { 
      bindingExpression.ParentBinding.Converter = new MyConverter(); 
     } 

In diesem Schritt wird die folgende Ausnahme ausgelöst: Bindung nicht geändert werden kann, nachdem es verwendet worden ist. Wie kann ich früher auf die Bindung zugreifen, um die Eigenschaft zu ändern?

+0

haben Sie die Antwort überprüft – AnjumSKhan

Antwort

0
  1. Erstellen Sie einen neuen Binding und wenden Sie ihn an. Sie können verschiedene Eigenschaften von der alten Binding Instanz erhalten.

    oder

  2. Verwendung Trigger anzuwenden bedingte Binding, eine mit und die andere ohne IValueConverter.

+0

Wie funktioniert die zweite Lösung? Kannst du ein Beispiel geben? Erstellen einer neuen Bindung ist nicht so elegant. –

+0

@ Mi.Sharp Alles ist elegant, wenn die Situation es erfordert. – AnjumSKhan

Verwandte Themen