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>();
}
}
MVVM Light Toolkit
时间: 2024-10-10 06:38:40