WPF binding not updating the view
Add binding mode two way, because by default Textblock's binding mode is one way
<TextBlock HorizontalAlignment="Left" Name="StatusText" Margin="0,20" TextWrapping="Wrap" Text="{Binding StatusText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
... Status ...
</TextBlock>
and also, of course you need to implement INotifyPropertyChanged for the purpose, refer to this link for how to implement.
You need to implement INotifyPropertyChanged
in your ViewModel order to notify the View that the property has changed.
Here's a link to the MSDN page for it: System.ComponentModel.INotifyPropertyChanged
The most important thing to note is that you should raise the PropertyChanged
event in your property setter.
Your view model needs to implement INotifyPropertyChanged
, and you need to raise it every time one of your property changes (ie in the setter).
Without it WPF has no way of knowing that the property has changed.
When working with DataModels you have to be sure the model is complete at intial load. So if you do this: this.DataContext = mainViewModel and some parts of you mainViewModel are NOT loaded (=null) then you are not able to bind them. Example, I have a Model within that model an object Program. I bind to Text of a TextBlock to Model.Program.Name. The Program object is not connected at initial load so you will have to rebind to a loaded object after because otherwise no notifications can be send.