我有WinForms与WPF用户控制。
public partial class DynamicMediator : Form
{
public DynamicMediator()
{
InitializeComponent();
lmDynamicMediator = new LMDynamicMediator.MediatorMainWindow();
this.elementHost1.Child = this.lmDynamicMediator;
}
public MainWindowViewModel GetEditFormViewModel()
{
return lmDynamicMediator.Resources["ViewModel"] as MainWindowViewModel;
}
}
我在ViewModel中启动了一个新进程,之后我需要更新我使用的ViewModel中的observableCollection
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => HasListMessages.Add(item)));
但我有个例外
此类型的CollectionView不支持从Dispatcher线程以外的线程对其SourceCollection进行更改
如果我使用这样代码
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => HasListMessages.Add(item)));
我有这样的例外
系统.窗口.应用程序.当前.get返回空值
我做错了什么?
如何在我的ViwModel中获取系统.窗口.应用程序.当前
1条答案
按热度按时间h7wcgrx31#
在尚未与Dispatcher关联的线程中调用
Dispatcher.CurrentDispatcher
将创建一个新的Dispatcher,该Dispatcher不是UI线程的Dispatcher。使用创建视图模型示例的线程的Dispatcher,将其保存在视图模型类的字段中
然后使用该字段: