在为Windows Phone 8.1 WinRT应用程序构建View模型之一的过程中,我打电话给DispatcherHelper.CheckBeginInvokeOnUI

我在运行时通过App.xaml.cs OnLauched事件处理程序初始化了DispatcherHelper,但是在设计时未进行此初始化,因此当我调用DispatcherHelper.CheckBeginInvokeOnUI时,出现异常,消息为“ DispatcherHelper未初始化”。

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

最佳答案

正如问题中提到的,避免此问题的一种可能方法是检查我们是否首先在this gist中处于设计模式:

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);
            }
        }
    }
}

关于c# - MVVM Light Dispatcher帮助程序设计时间错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30855695/

10-11 19:12