我试图弄清楚如何在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/