代码之家  ›  专栏  ›  技术社区  ›  jle

WPF MVVM从ViewModel获取列表<对象>的线程安全方式

  •  1
  • jle  · 技术社区  · 15 年前

    我正试图从后台工作人员访问视图模型上的列表,但由于我要跨线程访问,所以出现了错误。。。

    这是viewmodel上的问题方法:(我在函数(SMMainWindow…)的第一行获得异常)

    public static MainWindowViewModel GetMainWindowViewModel() {
                SMMainWindow window = (SMMainWindow)System.Windows.Application.Current.MainWindow;
                if (window != null) {
                    return (MainWindowViewModel)window.DataContext;
                }
                return null;
    }
    

    有什么想法吗?样本代码将不胜感激

    2 回复  |  直到 15 年前
        1
  •  3
  •   Reed Copsey    15 年前

    如果您使用窗口调度程序的实例设置ViewModel,这将非常有帮助。如果您有此功能,则可以使用Dispatcher.Invoke在ViewModel中获取或设置项。

        2
  •  0
  •   Anderson Imes    15 年前

    如果它是免费的,你也许可以冻结你的窗口。这应该允许您访问它。

    dispatcher方法可能是一个很好的选择,但我总觉得这是一种违规行为(感觉ViewModel处理UI的方式过于接近),但这可能是个人偏好。