Home » c# » How to set a binding in Code?

How to set a binding in Code?

Posted by: admin November 30, 2017 Leave a comment

Questions:

I have the need to set a binding in code.

I can’t seem to get it right tho.

This is what i have tried:

XAML:

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

Code behind:

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

The property is not updating when i set it.

What am i doing wrong?

Answers:

Try this:

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

If you specify path (like you do in constructor), your source should be just ViewModel, the .SomeString part is evaluated from the path.

Questions:
Answers:

you need to change source to viewmodel object:

myBinding.Source = viewModelObject;