Мне не удается вернуться к потоку пользовательского интерфейса с помощью Reactive Extentions и MVVM Light Toolkit.
Я получил следующие свойства в ViewModel:
private ObservableCollection<Workspace> _workspaces;
public ObservableCollection<Workspace> Workspaces
{
get
{
return _workspaces;
}
set
{
if (_workspaces == value)
return;
_workspaces = value;
RaisePropertyChanged("WorkspacesLoaded");
}
}
public bool WorkspacesLoaded
{
get
{
if (_workspaces != null && _workspaces.Count > 0)
return true;
return false;
}
}
Обратите внимание на RaisePropertyChanged("WorkspacesLoaded");
который никогда не достигает пользовательского интерфейса.
Следующий код подписывается на Subject<Workspace>
, и из того, что я прочитал, .ObserveOnDispatcher()
должно вернуть меня в поток пользовательского интерфейса.
_workspaceSubscription = _workspaceSource.WorkspaceMutations
.ObserveOnDispatcher()
.SubscribeOn(Scheduler.ThreadPool)
.Subscribe(OnNewWorkspaceMutation, OnWorkspaceMutationError);
_workspaceSource.GetWorkspaces();
И этот код добавляет к свойству Workspaces
:
private void OnWorkspaceCreated(Workspace workspace)
{
Workspaces.Add(workspace);
}
Это то, что сбивает меня с толку: коллекция Workspaces
заполняется правильно, а пользовательский интерфейс привязывается к ней правильно.Однако, когда я устанавливаю точку останова на установщик Workspaces
, он никогда не срабатывает, поэтому я подозреваю, что поток Observable не возвращается в поток пользовательского интерфейса.
Любая помощь будет высоко оценена.