2019-9-2-win10-UWP-MvvmLight入门
| title | author | date | CreateTime | categories |
|---|---|---|---|---|
|
win10 UWP MvvmLight入门
|
lindexi
|
2019-09-02 12:57:38 +0800
|
2018-2-13 17:23:3 +0800
|
Win10 UWP
|
安装MvvmLight
我们安装的是MvvmLightLib。
右击项目,管理Nuget,搜索MVVM
安装第二个。他包含了运行的类库,我们将会使用里面的一些类。关于lib包含的库,参见:http://www.cnblogs.com/manupstairs/p/4890300.html
新建ViewModel文件夹
右击项目,新建文件夹ViewModel和View、Model三个文件夹。
在ViewModel文件夹新建类ViewModelLocator。
打开App.xaml
添加命名空间xmlns:viewModel="using:项目.ViewModel"
其中项目为你新建项目的名称
添加资源作为全局的ViewModel管理
<Application.Resources>
<ResourceDictionary>
<viewModel:ViewModelLocator x:Key ="ViewModelLocator"></viewModel:ViewModelLocator>
</ResourceDictionary>
</Application.Resources>
接着假如我们有两个页面,一个是MainPage,一个是ChangeControlPage,那么我们就在ViewModel文件夹新建两个类MainModel和ChangeControlModel
他们继承ViewModelBase
接着在ViewModelLocator添加属性
public ViewModel ViewModel => ServiceLocator.Current.GetInstance<ViewModel>();
注意,ViewModel 是多个ViewModel,也就是MainModel和ChangeControlModel,写法就是代换ViewModel为你的ViewModel
我们需要在ViewModelLocator的构造上用SimpleIoc.Default.Register
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(()=>SimpleIoc.Default); SimpleIoc.Default.Register<ViewModel>();
}
接着打开MainPage.xaml,原来是在cs写我们的ViewModel实例,现在我们可以直接在xaml
<Page.DataContext>
<Binding Source="{StaticResource ViewModelLocator}" Path="ViewModel"></Binding>
</Page.DataContext>
当然我们可以换个方式
DataContext="{Binding Source={StaticResource ViewModelLocator},Path=ViewModel}"
绑定
我们先在ViewModel中新建字段_str,我们绑定到xaml
public string Str
{
set
{
Set(ref _str, value);
}
get
{
return _str;
}
} private string _str;
<TextBlock Text="{Binding Path=Str,Mode=OneWay}"
HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
我们可以把命令绑定到ViewModel,写法垃圾
public ViewModel(INavigationService navigationService)
{
_navigationService = navigationService;
Navigate = new RelayCommand(NavigateHigPage);
} public ICommand Navigate
{
set;
get;
} private void NavigateHigPage()
{ }
我们继续做从Main跳到第二页面,第二页面叫HigPage
首先打开ViewModelLocator,在构造写一个帮我们传页面信息NavigationService
var navigationService = new NavigationService();
navigationService.Configure("main",typeof(MainPage));
navigationService.Configure("hig",typeof(HightClipPage));
SimpleIoc.Default.Register<INavigationService>(() => navigationService);
在需要跳转的函数
private void NavigateHigPage()
{
var navigateService = ServiceLocator.Current.GetInstance<INavigationService>();
navigateService.NavigateTo("hig","hellow");
}
我跳转到第二页面,然后给他参数hellow
参考
2019-9-2-win10-UWP-MvvmLight入门的更多相关文章
- win10 uwp MVVM入门
MVVM 是一个强大的架构,基本从 WPF 开始,wr(我说的就是微软)就提倡使用 MVVM.它可以将界面和后台分离,让开发人员可以不关心界面是怎样,全心投入到后台代码编写中. 然后在编写完后台代码后 ...
- win10 uwp MVVM 轻量框架
如果在开发过程,遇到多个页面之间,需要传输信息,那么可能遇到设计的问题.如果因为一个页面内包含多个子页面和多个子页面之间的通信问题找不到一个好的解决方法,那么请看本文.如果因为ViewModel代码越 ...
- win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序
本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台. 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单. Visua ...
- win10 uwp win2d CanvasVirtualControl 与 CanvasAnimatedControl
本文来告诉大家 CanvasVirtualControl ,在什么时候使用这个控件. 在之前的入门教程win10 uwp win2d 入门 看这一篇就够了我直接用的是CanvasControl,实际上 ...
- win10 uwp 通过 Win2d 完全控制笔迹绘制逻辑
本文来告诉大家如何通过 Win2d 完全控制笔迹绘制逻辑,本文适合用来实现复杂的自定义逻辑,可以完全控制笔迹的行为.包括在书写过程中切换模式,如进行手势擦除切换为橡皮擦模式 本文提供的方法适合用来做复 ...
- win10 uwp 入门
UWP是什么我在这里就不说,本文主要是介绍如何入门UWP,也是合并我写的博客. 关于UWP介绍可以参见:http://lib.csdn.net/article/csharp/32451 首先需要申请一 ...
- Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App
安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...
- UWP开发入门系列笔记之(一):UWP初览
标签: 随着微软Build2015带来的好消息,Win10正式版发布的日子已经离我们越来越近了,我们也终于欣喜地看到:一个统一的Windows平台对于开发人员来说充满了吸引力,这局棋下的好大的说--于 ...
- [UWP]本地化入门
1. 前言 上一篇文章介绍了各种WPF本地化的入门知识,这篇文章介绍UWP本地化的入门知识. 2. 使用resw资源文件实现本地化 在以前的XAML平台,resx资源文件是一种很方便的本地化方案,但在 ...
- win10 uwp 如何开始写 uwp 程序
本文告诉大家如何创建一个 UWP 程序. 这是一系列的 uwp 入门博客,所以写的很简单 本文来告诉大家如何创建一个简单的程序 安装 VisualStudio 在开始写 UWP 需要安装 Visual ...
随机推荐
- php io
1.获取目录下文件,不包括子目录 //获取某目录下所有文件.目录名(不包括子目录下文件.目录名) $handler = opendir($dir); while (($filename = readd ...
- 24.mongodb可视化工具部署——2019年12月19日
2019年10月09日17:05:54 教程链接:https://blog.csdn.net/qq_32340877/article/details/79142129 项目名:adminMongo g ...
- crt无法修改背景
当会话选项 里面的终端类型选择为Linux时,是无法修改外观颜色方案的.可以选择为vt100,就可以修改颜色了
- random模块 os模块
# random# import random# random.random() # 大于0且小于1之间的小数# random.randint() # 大于等于1且小于等于3之间的整数# random ...
- rest认证组件,权限组件,频率组件,url注册器,响应器组件,分页器组件
1.认证组件 1.1 认证组件利用token来实现认证 1.2 token认证的大概流程 用户登录===>获取用户名和密码===>查询用户表 如果用户存在,生成token,否则返回错误信息 ...
- 对Kubernetes的研究
服务发现和负载平衡 自动包装 存储编排 自愈 自动部署和回滚 秘密和配置管理 批量执行 水平缩放 是一个对docer进行管理的平台.
- Change the environment variable for python code running
python程序运行中改变环境变量: Trying to change the way the loader works for a running Python is very tricky; pr ...
- jmeter接口测试与接口测试工具
接口测试与接口测试工具 1,什么是接口? 接口,Application Programming Interface(API) 通俗的讲 就是HTTP请求 2,什么是接口测试? 接口测试测试组件间接口的 ...
- php current()函数 语法
php current()函数 语法 作用:返回数组中的当前元素的值.直线电机工作原理 语法:current(array) 参数: 参数 描述 array 必需.规定要使用的数组. 说明:返回数组中的 ...
- swan.onPageNotFound
解释: 监听小程序要打开的页面不存在事件.该事件与 App.onPageNotFound 的回调时机一致. 方法参数: Function callback小程序要打开的页面不存在的事件回调函数. ca ...