MVVM 轻型调度程序帮助程序设计时错误

本文关键字:错误 程序设计 帮助 轻型 调度程序 MVVM | 更新日期: 2023-09-27 17:56:37

在为 Windows Phone 8.1 WinRT 应用程序构建一个视图模型的过程中,我接到了一个电话DispatcherHelper.CheckBeginInvokeOnUI

我在运行时在 App.xaml .cs OnLauched 事件处理程序上初始化DispatcherHelper,但在设计时,当我调用 DispatcherHelper.CheckBeginInvokeOnUI 时,此初始化不会完成,我收到一个异常,并显示消息"调度程序助手未初始化"

除了

有条件地调用DistpatcherHelper,先检查ViewModelBase.IsInDesignMode之外,有什么方法可以在设计时避免此问题?

MVVM 轻型调度程序帮助程序设计时错误

如问题中所述,避免此问题的一种可能方法是首先检查我们是否处于设计模式,如以下要点所示:

using System;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Threading;
namespace MvvmLight.Helpers
{
    public class DesignAwareDispatcherHelper
    {
        public static void CheckDesignModeInvokeOnUI(Action action)
        {
            if (action == null)
            {
                return;
            }
            if (ViewModelBase.IsInDesignModeStatic)
            {
                action();
            }
            else
            {
                DispatcherHelper.CheckBeginInvokeOnUI(action);
            }
        }
    }
}