首页 > 代码库 > MVVM Light Toolkit

MVVM Light Toolkit

DispatcherHelper 

因为 ViewModel 是一个 POCO,它不能访问 Dispatcher 属性,因此我需要通过另一种方式来访问主线程,以将操作加入队列中。这是 MVVM Light DispatcherHelper 组件的作用。

CheckBeginInvokeOnUI:

顾名思义,此方法首先执行检查。如果此方法的调用方已经在主线程上运行,则无需进行调度。在这种情况下会直接在主线程上立即执行委托。但如果此调用方是在后台线程上,则执行调度。

 

RaisePropertyChanged with CallerMemberName (.net 4.5 only):

 

protected void RaisePropertyChanged([CallerMemberName]string propertyName = "")
        {
            base.RaisePropertyChanged(propertyName);
        }

 

ServiceLocator and SimpelIoc:

App.xaml.cs:

 

<vm:ViewModelLocator x:Key="Locator"
                            d:IsDataSource="True" />

 

Mainwindow.xaml:

...
DataContext="{Binding Main, Source={StaticResource Locator}}">

ViewModelLocator.cs:

static ViewModelLocator()
       {
           ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
 
           if (ViewModelBase.IsInDesignModeStatic)
           {
               SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
           }
           else
           {
               SimpleIoc.Default.Register<IDataService, DataService>();
           }
 
           SimpleIoc.Default.Register<MainViewModel>();
       }
public MainViewModel Main
        {
            get
            {
                return ServiceLocator.Current.GetInstance<MainViewModel>();
            }
        }