我试图从后台工作人员访问视图模型上的列表,但由于要跨线程而收到错误...
这是视图模型上的问题方法:(我在函数的第一行得到了异常(SMMainWindow window ...))
public static MainWindowViewModel GetMainWindowViewModel() {
SMMainWindow window = (SMMainWindow)System.Windows.Application.Current.MainWindow;
if (window != null) {
return (MainWindowViewModel)window.DataContext;
}
return null;
}有什么想法吗?示例代码将不胜感激
发布于 2009-08-05 00:51:22
如果你用你的窗口调度程序的一个实例来设置你的ViewModel,这会有很大的帮助。如果您有这个功能,那么您就可以在ViewModel中使用Dispatcher.Invoke来获取或设置项目。
发布于 2009-08-05 03:03:53
如果它是可冻结的,你也许可以冻结你的窗口。这应该允许您访问它。
dispatcher方法可能是一个很好的选择,但我总是觉得这是一种违规(感觉像是ViewModel与UI处理得太近了),但这可能是个人偏好。
然而,我在这里质疑你的方法。有没有一个很好的理由让一个ViewModel去引用另一个呢?我会考虑重新考虑这种方法。通常,当人们这样做时,他们是在访问ViewModel,而实际上他们应该接触的是模型。
https://stackoverflow.com/questions/1230604
复制相似问题