J'ai besoin de définir une liaison dans le code.
Je n'arrive pas à faire les choses correctement.
Voici 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);
VoirModèle:
public string SomeString
{
get
{
return someString;
}
set
{
someString= value;
OnPropertyChanged("SomeString");
}
}
La propriété ne se met pas à jour lorsque je la définis.
Qu'est-ce que je fais mal?
c#
wpf
xaml
data-binding
Willem
la source
la source
Vous devez changer la source en objet viewmodel:
la source
En plus de la réponse de Dyppl , je pense que ce serait bien de placer ceci à l'intérieur de l'
OnDataContextChanged
événement:Nous avons également eu des cas où nous avons simplement enregistré le
DataContext
dans une propriété locale et l' avons utilisé pour accéder aux propriétés de viewmodel. Le choix vous appartient bien sûr, j'aime cette approche car elle est plus cohérente avec le reste. Vous pouvez également ajouter des validations, comme des vérifications nulles. Si vous changez réellement votreDataContext
entourage, je pense que ce serait bien d'appeler également:pour effacer la liaison de l'ancien viewmodel (
e.oldValue
dans le gestionnaire d'événements).la source