草庐IT

Jetpack-MVVM

全部标签

沉思篇-剖析Jetpack的ViewModel

ViewModel做为架构组件的三元老之一,是实现MVVM的有力武器。ViewModel的设计目标ViewModel的基本功能就是管理UI的数据。其实,从职责上来说,这又是对Activity和Fragment的一次功能拆分。以前存储在它们内部的数据,需要它们自己处理创建,更新,存储,恢复的所有过程,同时它们还要处理UI的数据绑定,更新,动画等操作。职责的多元化就容易出现不好定位和调试的问题。另外,Activity和Fragment作为UI的承载者,很多时候需要共享数据和复用功能。而UI的差异让复用的粒度划分很难把控,容易写出扩展性差的代码。基于这些痛点,ViewModel被设计出来了。同时Vi

Android Jetpack Compose 用计数器demo理解Compose UI 更新的关键-------状态管理(State)

目录概述1.什么是状态2.什么是单向数据流3.理解Stateless和Stateful4.使用Compose实现一个计数器4.1实现计数器4.2增加组件复用性-----状态上提总结概述我们都知道了Compose使用了声明式的开发范式,在这样的范式中,UI的职责更加的单一,只会对数据状态的变化作出反应,如果数据状态没有发生变化,则UI就永远不会自行的改变。假如我们把Composable的执行看成是一个函数的运算的话,那么状态就是函数的参数,输出就是生成的布局。由于唯一的参数决定唯一的输出,所以只有当函数的参数发生了变化,生成的布局才会相应的跟着变化。本文会通过一个计时器的小例子分别介绍如何能够更

三种架构模式——MVC、MVP、MVVM

目录前言一、MVC(Model-View-Controller)1、简介2、框架图二、MVP(Model-View-Presenter)1、简介2、框架图三、MVVM(Model-View-ViewModel)1、简介2、框架图四、总结前言MV系列框架中,M和V分别指Model层和View层,但其功能会因为框架的不同而变化。Model层是数据模型,用来存储数据;View层是视图,展示Model层的数据。虽然在不同的框架中,Model层和View层的内容可能会有所差别,但是其基础功能不变,变的只是数据的传输方式。一、MVC(Model-View-Controller)1、简介MVC是模型-视图-

循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(5) -- 树列表TreeView的使用

在我们展示一些参考信息的时候,有所会用树形列表来展示结构信息,如对于有父子关系的多层级部门机构,以及一些常用如字典大类节点,也都可以利用树形列表的方式进行展示,本篇随笔介绍基于WPF的方式,使用TreeView来洗实现结构信息的展示,以及对它的菜单进行的设置、过滤查询等功能的实现逻辑。1、TreeView树形列表的展示我们前面随笔介绍到的用户信息的展示,左侧就是一个树形的类表,通过展示多层级的部门机构信息,可以快速的查找对应部门的用户信息,如下界面所示。我们来看看界面中树形列表部分的Xaml代码如下所示。TreeViewx:Name="deptTree"Margin="0,10,10,0"Fo

深入理解WPF中MVVM的设计思想

近些年来,随着WPF在生产,制造,工业控制等领域应用越来越广发,很多企业对WPF开发的需求也逐渐增多,使得很多人看到潜在机会,不断从Web,WinForm开发转向了WPF开发,但是WPF开发也有很多新的概念及设计思想,如:数据驱动,数据绑定,依赖属性,命令,控件模板,数据模板,MVVM等,与传统WinForm,ASP.NETWebForm开发,有很大的差异,今天就以一个简单的小例子,简述WPF开发中MVVM设计思想及应用。 为什么要用MVVM? 传统的WinForm开发,一般采用事件驱动,即用户点击事件,触发对应的事件,并在事件中通过唯一标识符获取页面上用户输入的数据,然后进行业务逻辑处理。这

循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(4) -- 实现DataGrid数据的导入和导出操作

在我们设计软件的很多地方,都看到需要对表格数据进行导入和导出的操作,主要是方便客户进行快速的数据处理和分享的功能,本篇随笔介绍基于WPF实现DataGrid数据的导入和导出操作。1、系统界面设计在我们实现数据的导入导出功能之前,我们在主界面需要提供给客户相关的操作按钮,如下界面所示,在列表的顶端提供导入Excel、导出PDF、导出Excel。由于这些操作功能基本上在各个页面模块,可能都会用到,因此尽可能的抽象到基类,以及提供通用的处理操作,实在有差异的,也可以通过一些属性或者事件方法的覆盖方式来实现即可。因此我们在Xaml里面定义按钮的时候,基本上是调用视图模型的方法来通用化的处理,如下代码所

Android Jetpack组件一览

官网简介Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。Jetpack是Google为解决Android开发碎片化,打造成熟健康生态圈提出的战略规划,是Google对Android未来提出的发展方向,同时它也是众多优秀Android组件的集合。JetPack的构成图Jetpack主要特性:1.加速开发组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率。2.消除样板代码AndroidJetpack可管理繁琐的Activity(如后台任务、导航和生命周期管理

Jetpack Compose 学习汇总

关于JetpackCompose的学习本想只是简单的快速学习一下,结果万万没想到,竟然一下子折腾了好几个月。。。下面将之前记录的JetpackCompose相关的学习博文进行一个汇总链接整理,方便我以后自己查阅,也希望能帮到一些有正在学习Compose的道友。JetpackCompose中的基础组件JetpackCompose中的state核心思想JetpackCompose中的ModifierJetpackCompose中的动画JetpackCompose中的手势操作和事件处理JetpackCompose中的导航路由JetpackCompose中的AccompanistJetpackComp

mvvm - 在 MVVM (TCP) 中实现数据访问层

大多数MVVM和数据访问层文章都解释了WCF和DTO的东西,但我的项目从不使用它们,而是与服务器进行简单的TCP/IP通信。我有模型直接使用Tcp/ip套接字。但是,我一直觉得tcp/ip套接字逻辑应该与模型分离。如果是这样,我想知道如何解耦和实现它们。 最佳答案 我一直认为模型是从数据库、服务、文件...任何存储库(包括套接字)交付给我的“东西”。我会将套接字包装在某种存储库中,以一种可以转换为ViewModel的良好格式获取数据。也就是说,如果速度是您使用套接字的原因,那么整个存储库/模型/View模型可能被证明太慢了。一如既往

循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(3)--自定义用户控件

在我们创建界面元素的时候,不管在Vue3+ElementPlus的前端上,还是Winform桌面端上,都是会利用自定义用户控件来快速重用一些自定义的界面内容,对自定义用户控件的封装处理,也是我们开发WPF应用需要熟悉的一环。本篇随笔继续深入介绍介绍基于CommunityToolkit.Mvvm和HandyControl的WPF应用端开发,主要针对自定义用户控件的封装和使用做一些介绍。1、自定义用户控件的应用场景在我们使用原生的WPF控件的时候,有时候发现常规的原生控件不够好看,或者功能达不到要求,就需要进行一定程度上的二次封装处理,也就是自定义控件的开发场景。例如我们前面介绍到的用户信息的查询