Verificando se OnPropertyChanged () é chamado no thread da interface do usuário no MVVM WPF app
Em um aplicativo WPF que estou escrevendo usando o padrão MVVM, tenho um processo em segundo plano que faz isso, mas preciso obter atualizações de status para a interface do usuário.
Estou usando o padrão MVVM, então meu ViewModel não conhece praticamente nada da visualização (UI) que está apresentando o modelo ao usuári
Digo que eu tenho o seguinte método no meu ViewModel:
public void backgroundWorker_ReportProgress(object sender, ReportProgressArgs e)
{
this.Messages.Add(e.Message);
OnPropertyChanged("Messages");
}
Na minha opinião, tenho um ListBox vinculado à propriedade Messages (aList<string>
) do ViewModel.OnPropertyChanged
cumpre o papel doINotifyPropertyChanged
chamando umPropertyChangedEventHandler
.
Preciso garantir queOnPropertyChanged
é chamado no thread da interface do usuário - como faço isso? Eu tentei o seguinte:
public Dispatcher Dispatcher { get; set; }
public MyViewModel()
{
this.Dispatcher = Dispatcher.CurrentDispatcher;
}
Em seguida, adicione o seguinte aoOnPropertyChanged
método:
if (this.Dispatcher != Dispatcher.CurrentDispatcher)
{
this.Dispatcher.Invoke(DispatcherPriority.Normal, new ThreadStart(delegate
{
OnPropertyChanged(propertyName);
}));
return;
}
mas isso não funcionou. Alguma ideia