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?
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.
vous devez changer de source pour l'objet viewmodel:
myBinding.Source = viewModelObject;