| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 【WPF】MVVMLight -> 正文阅读 |
|
[开发测试]【WPF】MVVMLight |
一、MVVM介绍? ? ? MVVM(Model-View-ViewModel)—— 类似于MVC、MVP的设计模式(非框架级别),由MVP(Model-View-Presenter)模式与WPF结合的应用方式发展演变过来的一种新型架构。主要目的是分离视图(View)和模型(Model)的耦合。 1、结构:?2、优点:(1)低耦合:视图(View)独立于Model的变化,一个ViewModel可以绑定到不同的View上。View变化时Model可以不变,Model变化时View可以不变。 (2)可重用性:可以把不同视图逻辑放到一个ViewModel里,让多个View重用这段视图逻辑。 (3)独立开发:开发人员可以专注于业务逻辑和数据的开发,设计人员可以专注于页面设计。 (4)可测试:(不懂) 参考:https://www.cnblogs.com/wzh2010/p/6285954.html 二、MVVMLight框架1、安装? ? ? ?方式一:去官网上下载MVVMLight Toolkit,安装后,VS模板中会出现MvvmLight项目模板,可以直接使用该项目模板来创建项目,项目里面会包含默认的ViewModelLocator和MainViewModel。 ???????方式二:NuGet安装。在NuGet 工具箱上搜索 MVVM Light,可以看到两个项目,一个是MVVM Light , 一个是 MVVM Light libraries only。两个项目的区别是MVVMLight 除了必要的GalaSoft 组件之外,还会额外添加相关分层文件目录,形成简单的MVVMLight成型框架,帮助生成ViewModel文件夹,里面包含MainViewModel和ViewModelLocator文件。 2、ViewModel文件夹MainViewModel.cs? ? //自动为主窗口生成的viewmodel,可以删除,然后自定义。 ViewModelLocator.cs? ?//视图模型注入器,用来联系View相对应的viewmodel
?每次APP初始化时都会初始化ViewModelLocator。 在构造器中把使用到的ViewModel统一注册,并生成单一实例。 然后使用属性把它暴露出来,每当访问属性的时候,就会返回相应的ViewModel实例。
使用ViewModelLocator后,View和ViewModel之间不再直接引用,而是通过ViewModelLocator关联。储存在ViewModelLocator里的ViewModel类似于单例的存在,可以在全局引用绑定。同时避免了某些情况下频繁创建ViewModel,却未做好资源释放造成的内存泄漏。 3、使用(1)直接在项目上增加; (2)如果有新的界面与新的viewmodel,则需要在ViewModelLocator中注册写好的ViewModel。 (3)Model中,对应的字段属性需要有通知事件,在对应的ViewModel定义的集合或者字段也需要有通知事件。
(4)绑定:前端或后台 前端:在<Window>标签中增加 ?DataContext="{Binding Source={StaticResource Locator},Path=注册的自定义实例}"
后台:在对应的.cs的构造函数中增加 ?this.DataContext = new 自定义的ViewModel();
参考:https://blog.csdn.net/qq_43307934/article/details/91044172? ? |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 22:47:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |