我试图弄清楚如何在SL中使用DispatcherHelperftom MVVM light工具包,但找不到任何示例。

从这个框架的主页我知道



但是我不知道如何使用它。

我如何以及如何使用它?

最佳答案

仅当您希望通过在不同线程上运行的代码对UI线程上的组​​件进行更改时,才需要DispatcherHelper。例如。在Silverlight应用程序中,您调用Web服务以异步检索一些数据,现在想通过OnNotifyPropertyChanged事件通知Ui数据存在。

首先,您必须初始化DispatcherHelper。在Silverlight中,您可以使用Application_Startup进行此操作:

//initialize Dispatch helper
private void Application_Startup( object sender, StartupEventArgs e) {
    RootVisual = new MainPage();
    DispatcherHelper.Initialize();
}

在WPF中,初始化是在App类的静态构造函数中完成的:
static App() {
    DispatcherHelper.Initialize();
}

然后,在处理您的asnc调用完成时,请使用以下代码在UI线程上调用RaisePropertyChanged:
DispatcherHelper.CheckBeginInvokeOnUI(
    () => RaisePropertyChanged(PowerStatePropertyName)
);
DispatcherHelper.BeginInvokeOnUl需要一个Action,因此您可以在此处使用任何代码,只需使用
DispatcherHelper.CheckBeginInvokeOnUI(
    () => { /* complex code goes in here */ }
);

做更复杂的任务。

关于silverlight-4.0 - DispatcherHelper的简单示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7401538/

10-11 06:18