Как установить привязку в коде?


у меня есть необходимость создать привязку в коде.

кажется, я не могу понять это правильно.

вот что я пробовал:

XAML:

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

код:

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

свойство не обновляется, когда я установить его.

что я делаю не так?

2 70

2 ответа:

попробуйте это:

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

если указать path (как в конструкторе), ваш источник должен быть просто ViewModel на .SomeString часть вычисляется из пути.

вам нужно изменить источник для объекта viewmodel:

myBinding.Source = viewModelObject;