接下来我们看如何使用ViewModelLocator,在使用NuGet安装MvvmLight时,会自动给我们的App.xaml加入一个Resource <Applicationx:Class="MvvmDemo.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/...
VS2015创建一个名为UniversalApp的空工程(工程类型为Universal),然后通过NuGet获取MvvmLight,这里需要注意的是,我们选择MvvmLightLib仅下载DLL文件,因为MvvmLight还未对Universal App做适配,并不会自动创建ViewModel以及ViewModelLocator等文件。 UniversalApp完成后,将上一篇创建的HelloMvvmLight工程中的ViewModel文件夹整个拷贝...
如果使用NuGet安装的是完整的一个是MVVM Light 框架,而非 MVVM Light libraries only的时候,总是会带上ViewModelLocator类,并且生成资源字典并加入到了全局资源中。 1 <Application x:Class="MVVMLightDemo.App" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schema...
I can see that the constructor of the ViewModelLocator is executed first when my application starts, but how to make the constructors of my ViewModels run after that, because inside them I have a registering that I want to happen in the beggining of my app. The constructor of my CustomV...
新建一个WPF工程,在引用处,鼠标右键,选择管理NuGet包,在弹出的界面中搜mvvmlight,然后安装最新的包即可。 安装成功后,会在我们新建的Wpf工程中自动生成ViewModel文件夹,里面包含MainViewModel.cs和ViewModelLocator.cs两个文件。 至此,一个基于MVVMLight框架的WPF项目基本搭建完成。
还有一个办法能指定DataContext,MVVM Light提供了ViewModelLocator.cs来帮助你绑定view的DataContext。不过我还是喜欢用上述最原始的方法。至于ViewModelLocator怎么使用,博园有相当多的牛人及文章,想要深入->O了解的可以去搜下。 其实DataContext在你引入MVVM框架之后就应该进行绑定了,写在这里只是为了提醒大家其重要性!
SimpleIoc.Default.Register<MainViewModel>(); 获取 ServiceLocator.Current.GetInstance<MainViewModel>(); 或 SimpleIoc.Default.GetInstance(); 瞬时单例 SimpeIoc.GetInstanceWithoutCaching<Views.Materials>(); 注销 SimpleIoc.Default.Unregister<Document>(); ...
{returnfalse;}}staticViewModelLocator(){//设置一个简单IOC容器,放到ServiceLocator中(类似放东西到ServiceLocator仓库)ServiceLocator.SetLocatorProvider(()=>SimpleIoc.Default);//声明一个导航服务,MVVMLight封装的varnav=newNavigationService();//配置页面到导航服务中nav.Configure(SecondPageKey,typeof(SecondPage)...
)]publicMainViewModel Main{get{returnServiceLocator.Current.GetInstance<MainViewModel>();}}...} ...
p => _navigationService.NavigateTo(ViewModelLocator.SecondPageKey, p), a => !string.IsNullOrEmpty(a))); } } 有参数的发送消息的命令 上回讲到了这串代码,这里刚好有使用示例。 消息注册 publicRelayCommand SendMessageCommand{get{//Messenger.Default获取到在上图声明的实例//这里send了一条上图中注册的...