Ich habe eine TextBox, dessen Wert auf eine Ansichtsmodell Eigenschaft binded ist:WPF TextBox Wert ändert auf OnPropertyChanged nicht
<TextBox Name="txtRunAfter" Grid.Column="4" Text="{Binding Mode=TwoWay, Path=RunAfter}" Style="{StaticResource TestStepTextBox}"/>
Das Set und erhalten funktioniert gut, bis ich einige Validierung hinzuzufügen versuchte, wenn der Wert 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");
}
}
}
}
Obwohl die OnPropertyChanged erreicht ist (ich habe dubugged dass) wird die Ansicht nicht geändert. Wie kann ich das machen?
Danke, José Tavares
Ich denke, Ihre Einschätzung des Problems ist richtig, aber der Dispatcher Anruf funktioniert nicht. Mein UserControl wird in einer WinForm-Anwendung mit einem ElementHost verwendet. Kann dies den Dispatcher-Aufruf beeinflussen? – jpsstavares
Okay, ich habe das ausprobiert und es hat gut funktioniert (wenn Sie die TextBox weglassen, da der Standardmodus der Bindung die Eigenschaft nicht aktualisiert, bis die TextBox den Fokus verliert). Ich habe die Antwort aktualisiert, um den UpdateSourceTrigger für die Bindungen zu erklären, falls das das Verhalten ist, das Sie sehen. Ich behandle nicht viel mit WPF, das in WinForms gehostet wird, aber ich sehe nicht, warum das den Binding oder Dispatcher in Ihrem Kontext betrifft. –