J'ai une zone de texte dont la valeur est binded à une propriété ViewModel:WPF valeur TextBox ne change pas OnPropertyChanged
<TextBox Name="txtRunAfter" Grid.Column="4" Text="{Binding Mode=TwoWay, Path=RunAfter}" Style="{StaticResource TestStepTextBox}"/>
L'ensemble et se travaillaient bien jusqu'à ce que j'ai essayé d'ajouter une validation lorsque la valeur est set:
private int _runAfter = 0;
public string RunAfter
{
get
{
return _runAfter.ToString();
}
set
{
int val = int.Parse(value);
if (_runAfter != val)
{
if (val < _order)
_runAfter = val;
else
{
_runAfter = 0;
OnPropertyChanged("RunAfter");
}
}
}
}
Bien que le OnPropertyChanged soit atteint (je dubugged que), la vue ne change pas. Comment puis-je faire ce travail?
Merci, José Tavares
Je suppose que votre évaluation du problème est correcte, mais l'appel dispatcher ne fonctionne pas. Mon UserControl est utilisé dans une application WinForm en utilisant un ElementHost. Cela peut-il affecter l'appel Dispatcher? – jpsstavares
D'accord, j'ai testé cela et ça a bien fonctionné (quand vous tabulez loin de la TextBox car le mode par défaut de la liaison ne mettra pas à jour la propriété tant que la TextBox ne perdra pas le focus). J'ai mis à jour la réponse pour expliquer le UpdateSourceTrigger sur les liaisons, dans le cas où c'est le comportement que vous voyez. Je ne traite pas beaucoup de WPF hébergé dans WinForms, mais je ne vois pas pourquoi cela affecterait Binding ou Dispatcher dans votre contexte. –