Tippt man in die TextBox Text ein, dann wird das auch durchgereicht an die darunterliegende Datenstruktur. Wenn ich aber über sowas wie
myTextBox.Text = "Neuer Text";
das Text-Property durch das Programm setze, kommt die Änderung nicht in der angebundenen Datenstruktur an, obwohl sie in der TextBox angezeigt wird. Beim Herumprobieren hab ich festgestellt, dass mit
myTextBox.Focus();
die Datenbindung funktioniert. Aber das kann es ja wohl nicht sein, dass ich den Focus setzen muss.
Weil die TextBox per Default die Binding-Source erst aktualisiert wenn die TextBox den Focus verliert wird der Wert wenn du ihn per Property setzt nicht an das Property weitergereicht.
Um das gewünschte Verhalten zu erreichen reicht es wenn das Default Verhalten im XAML abgeändert wird: Text="{Binding StringProp, UpdateSourceTrigger=PropertyChanged}" Jetzt wird der Wert bei jeder Änderung durchgeschrieben.
Auch wenn das geholfen hat, Du fährst auf Dauer u.U. besser damit, wenn Du nicht die Texteigenschaft mit einem Wert füllst, sondern die damit verbundene Property nimmst. Solltest Du mal auf MVVM umsteigen, musst Du es sowieso so machen.
Prinzipiell finde ich hat Jens schon recht - allerdings sollte das Binding bei einer TextBox sicher in beide Richtungen funktionieren, egal ob ein Benutzer was eingibt oder Code, dafür find ich das absolut legitim... Und dann gibt's natürlich auch den Fall dass ein Objekt das INotify gar nicht implementiert gebunden werden soll ....
Wäre es nicht die bessere Alternative, anstatt der Text-Eigenschaft einen Wert zuzuordnen, gleich direkt die damit gebundene Property zu nehmen? Diese ruft im Setter dann NotifyPropertyChanged auf und damit aktualisiert sich Deine Textbox automatisch.