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?
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.
sie müssen die Quelle in ein Ansichtsmodell-Objekt ändern:
myBinding.Source = viewModelObject;