Simple example of DispatcherHelper

后端 未结 1 693
梦如初夏
梦如初夏 2020-12-10 07:07

I\'m trying to figure out how can I use DispatcherHelperftom MVVM light toolkit in SL, but I can\'t find any example.

From home page of this framework I know that

相关标签:
1条回答
  • 2020-12-10 07:34

    You only need the DispatcherHelper when yo want to make changes to components on your UI thread, from code that runs on a different thread. E.g. in an Silverlight application you call a web service to retrieve some data asynchroneously, and now want to inform the Ui that the data is present via a OnNotifyPropertyChanged event.

    First you have to initialize the DispatcherHelper. In Silverlight you do this in Application_Startup:

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

    In WPF the initialization is done in the static constructor of you App class:

    static App() { 
        DispatcherHelper.Initialize();
    }
    

    Then in your event, handling the completion of your asnc call, use the following code to call RaisePropertyChanged on the UI thread:

    DispatcherHelper.CheckBeginInvokeOnUI(
        () => RaisePropertyChanged(PowerStatePropertyName)
    );
    

    DispatcherHelper.BeginInvokeOnUl expects an Action so you can use any code in here just use

    DispatcherHelper.CheckBeginInvokeOnUI(
        () => { /* complex code goes in here */ }
    );
    

    to do more complex tasks.

    0 讨论(0)
提交回复
热议问题