webentwicklung-frage-antwort-db.com.de

Wie setze ich eine Bindung im Code?

Ich muss eine Codebindung festlegen.

Ich kann es nicht richtig machen.

Das habe ich versucht:

XAML:

<TextBox Name="txtText"></TextBox>

Code dahinter:

Binding myBinding = new Binding("SomeString");
myBinding.Source = ViewModel.SomeString;
myBinding.Mode = BindingMode.TwoWay;
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
BindingOperations.SetBinding(txtText, TextBox.TextProperty, myBinding);

ViewModel:

public string SomeString
    {
      get
      { 
          return someString;
      }
      set 
      { 
          someString= value;
          OnPropertyChanged("SomeString");
      }
    }

Die Eigenschaft wird nicht aktualisiert, wenn ich es einstelle.

Was mache ich falsch?

79
Willem

Versuche dies:

Binding myBinding = new Binding();
myBinding.Source = ViewModel;
myBinding.Path = new PropertyPath("SomeString");
myBinding.Mode = BindingMode.TwoWay;
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
BindingOperations.SetBinding(txtText, TextBox.TextProperty, myBinding);

Wenn Sie path angeben (wie im Konstruktor), sollte Ihre Quelle nur ViewModel sein, das .SomeString Teil wird aus dem Pfad ausgewertet.

168
Dyppl

sie müssen die Quelle in ein Ansichtsmodell-Objekt ändern:

myBinding.Source = viewModelObject;
10
baalazamon