web-dev-qa-db-fra.com

Comment définir une liaison dans le code?

J'ai le besoin de définir une liaison dans le code.

Je ne peux pas sembler bien faire les choses.

C'est ce que j'ai essayé:

XAML:

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

Code derrière:

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");
      }
    }

La propriété n'est pas mise à jour lorsque je l'ai définie.

Qu'est-ce que je fais mal?

79
Willem

Essaye ça:

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);

Si vous spécifiez path (comme vous le faites dans le constructeur), votre source devrait être simplement ViewModel, le .SomeString une partie est évaluée à partir du chemin.

168
Dyppl

vous devez changer de source pour l'objet viewmodel:

myBinding.Source = viewModelObject;
10
baalazamon