MVVM Light Dispatcher帮助程序设计时错误

时间:2015-06-15 21:59:03

标签: c# winrt-xaml mvvm-light dispatcher

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

我在运行时在App.xaml.cs OnLauched事件处理程序初始化DispatcherHelper,但是在设计时这个初始化没有完成,所以当我调用DispatcherHelper.CheckBeginInvokeOnUI时,我得到一个带有消息的异常“ DispatcherHelper未初始化“

除了有条件地调用DistpatcherHelper,首先检查ViewModelBase.IsInDesignMode之外,有没有办法在设计时避免此问题?

1 个答案:

答案 0 :(得分:2)

正如问题所述,避免此问题的一种可能方法是首先检查我们是否处于设计模式,如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);
            }
        }
    }
}