首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MVVM模式和在WPF中的实现(一)MVVM模式简介

    后来看了刘铁猛的《深入浅出WPF》,里面说WPF就要用WPF的方式来开发。这才认真开始学WPF。现在控件面板和属性面板都已经用的很少了,界面布局基本全部用代码搞定,感觉任何一个细节都能控制到。...再后来接触到了MVVM,更加体会到了以MVVM模式开发WPF带来的好处。现在除非要求已经不再用Winform了,小工具和测试程序直接在后台写代码,复杂一点的需要长期使用和维护的用MVVM模式。...同一个ViewModel可以使用完全不用的View进行展示,同一个View也可以使用不同的ViewModel以提供不同的操作。...0x02 WPF中MVVM的解耦方式 在WPF的MVVM模式中,View和ViewModel之间数据和命令的关联都是通过绑定实现的,绑定后View和ViewModel并不产生直接的依赖。...0x3 MVVM框架需要解决的问题 从图中可以看出如果要实现一套MVVM框架,需要解决的最基本的问题就是数据绑定和命令绑定。此外由于UI中会产生大量的事件,因此还需要将事件绑定到MVVM中的命令上。

    2.1K20

    【我们一起写框架】MVVM的WPF框架(三)—数据控件

    DataControl—数据控件 上文我们已经编写出来了WPF的MVVM基础框架,但为了让他更加强壮,为了让他多坚持一阵子再粉碎,我们要让ViewModel更强壮,所以我们要编写[数据控件]。...因为WPF里的控件大多继承自Control,所以我们先创建Control的数据控件。...注意:TextChangeCallBack委托与TextChanged事件不同,并不是每次修改文字都会触发,而是当TextBox的Text内容真正被修改时,才会触发;我们可以简单的理解为TextBox失去焦点时才会触发...因为WPF的UI控件被创建以后,要被添加到视觉树中,所以最终会被显示在屏幕上的是包裹着控件的视觉树;其中视觉树与控件是可以分离的;比如控件中绑定的数据是10行,而视觉树可以显示3行。...相关文章: 【我们一起写框架】MVVM的WPF框架(一)—序篇 【我们一起写框架】MVVM的WPF框架(二)—绑定 To be continued——DataGrid Github地址:https://

    3.5K30

    C# WPF MVVM模式Prism框架下事件发布与订阅

    01 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行通讯...WPF MVVM项目实战(进阶①) C# WPF MVVM项目实战(进阶②) C# WPF框架Caliburn.Micro快速搭建 C# WPF项目实战 C# WPF mvvm模式下combobox绑定...(list、Dictionary) C# WPF MVVM模式下在主窗体显示子窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面...C# WPF文本框TextEdit不以科学计数法显示 C# 通过正则表达式来限制控件输入有效性 C# datagridview、datagrid、GridControl增加行号 C# =>符号的使用...C# 无意间写了一段线程死锁的代码 C# 看懂这100+行代码,你就真正入门了(经典) C# WPF项目实战(经典) WPF 如何修改button圆角(经典) WPF XAML 为项目设置全局样式

    4.8K20

    C# WPF MVVM模式Caliburn.Micro框架下事件发布与订阅

    01 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Caliburn提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行通讯...WPF MVVM项目实战(进阶①) C# WPF MVVM项目实战(进阶②) C# WPF框架Caliburn.Micro快速搭建 C# WPF项目实战 C# WPF mvvm模式下combobox绑定...(list、Dictionary) C# WPF MVVM模式下在主窗体显示子窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面...C# WPF文本框TextEdit不以科学计数法显示 C# 通过正则表达式来限制控件输入有效性 C# datagridview、datagrid、GridControl增加行号 C# =>符号的使用...C# 无意间写了一段线程死锁的代码 C# 看懂这100+行代码,你就真正入门了(经典) C# WPF项目实战(经典) WPF 如何修改button圆角(经典) WPF XAML 为项目设置全局样式

    2.9K10

    C# 修改配置文件进行窗体logo切换

    wpf mvvm方面的知识,框架用的Caliburn.Micro,关于这个框架介绍,不了解的自行百度。...有兴趣学习的可以关注: 相关经典原创文章链接:点击可以查看原文 C# WPF框架Caliburn.Micro快速搭建 C# WPF框架Caliburn.Micro入门实例1 C# WPF MVVM...项目实战(进阶①) C# WPF MVVM项目实战(进阶②) C# WPF项目实战 C# WPF mvvm模式下combobox绑定(list、Dictionary) C# WPF MVVM模式下在主窗体显示子窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面 C# WPF文本框TextEdit不以科学计数法显示 C...# 通过正则表达式来限制控件输入有效性 C# datagridview、datagrid、GridControl增加行号 C# =>符号的使用 C# 无意间写了一段线程死锁的代码 C# 看懂这100

    1.7K00

    WPF面试题-来自ChatGPT的解答

    总的来说,xmlns用于引入和使用WPF的命名空间,而xmlns:x用于引入和使用XAML的命名空间。它们的区别在于所引入的命名空间的不同,以及所支持的元素和特性的不同。...响应式布局:WPF提供了强大的布局系统,可以自动调整和重新排列界面元素,以适应不同的窗口大小和分辨率。这使得在不同的设备上创建自适应的用户界面更加容易。...WPF是微软推出的用于创建Windows应用程序的技术,它在设计上非常适合MVVM模式。WPF提供了强大的数据绑定机制和命令系统,使得开发者可以更轻松地实现MVVM架构。...这些框架提供了类似于WPF的数据绑定和命令系统,使得开发者可以在不同的平台上使用MVVM模式来构建应用程序。MVVM模式的出现和应用,使得开发者能够更加高效地开发可维护和可测试的应用程序。...支持团队协作:MVVM模式的清晰分层结构和明确的职责分工,使得团队成员可以更好地协作开发。不同的开发者可以独立地开发和测试各自负责的组件,而不会产生太多的冲突和依赖。

    4.3K30

    C# 值得永久收藏的WPF项目实战(经典)

    01 简介 之前也写过好多篇CM框架相关的项目实战文章,比如: C# WPF框架Caliburn.Micro快速搭建 C# WPF框架Caliburn.Micro入门实例1 C# WPF MVVM项目实战...(进阶①) C# WPF MVVM项目实战(进阶②) C# WPF MVVM模式下在主窗体显示子窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面 C# WPF...mvvm模式下combobox绑定(list、Dictionary) C# WPF MVVM模式Caliburn.Micro框架下事件发布与订阅 但是可能这些都是把一个综合性的项目分多个部分分别讲述的...其次,因为没有整体的构思,随着内容的增加,项目越来越显得笨重和凌乱,所以今天我重新搞了一个项目,希望以尽量少的代码,涵盖尽量多的知识点,帮助大家更好的理解和使用CM框架。...02重要知识点 CM框架的配置和启动; CM框架自带ioc容器SimpleContainer用法; MVVM开发模式; 事件聚合器EventAggregator进行事件发布和订阅; 属性通知: ① CM

    6K10

    WPF MVVM 写一个健壮的INotifyPropertyChanged基类

    当我们用MVVM的时候要实现INotifyPropertyChanged,如果你是基于.net4.5以下的framework(.net4.5已有新特性我这里就不说了) 你很可能会这么写 public...这么写看着好简单呀,而且还能有效避免硬编码对你带来的问题。 写一个x.就能出现你要的属性 ? 对!...这样你就能省下更多的时间去写加的代码了, 先说明一下用到的技术没有新的只是只用到了泛型和扩展方法和一点linq,要怎么实现呢?...,下这那个是个扩展类,如果你不太明白那就先回去看一下基础吧 是利用扩展根据lambda用上边我们写的公共类方法得到属性的名称,这也是为防止硬编码而做的工作 下面才是我们真正的基类PropertyNotifyObject...这样就能让我们写完x.后就能出现我们要的属性

    2.2K50

    WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换

    WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换 独立观察员 2021 年 8 月 23 日 我们平常在 WPF 中进行资源绑定操作,一般就是用 StaticResource...这种动态绑定资源 key 的功能,在 WPF 中没有被原生支持,所以还是得在网上找找解决方法。...最终在 stackoverflow 网站上看到一篇靠谱的讨论帖(Binding to resource key, WPF),里面几个人分别用 标记扩展、附加属性、转换器 的方式给出了解决方法,本文使用的是..."LockTime-Never", 0), }; 字符串资源放在资源字典中: 界面 Xaml 代码为: xmlns:markupExtensions="clr-namespace:Mersoft.Mvvm.MarkupExtensions...System.Globalization; using System.Windows; using System.Windows.Data; using System.Windows.Markup; namespace Mersoft.Mvvm.MarkupExtensions

    2.6K31

    【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题

    所有控件都有嵌入在 .net wpf 程序集中的默认模板(和样式)。18.WPF 是建立在 Windows 窗体之上的还是完全不同的? 这两个是完全不同的技术。...使用硬件加速来绘制 GUI,以获得更好的性能。 24.WPF中的命令设计模式和ICommand是什么?ICommand 是 MVVM 的核心组件。...26.什么是MVVM?MVVM(Model View ViewModel)是一个在WPF中制作应用的框架。 MVVM 与 MVC 框架相同。 它是一个三层架构,我们可以使用 MVVM 进行松耦合开发。...并且只在 ComboBox 中显示 Name 属性和 DisplayMemberPath 属性)。...WPF 为我们提供了许多不同的事件处理机制——它们是冒泡、隧道和直接。 这些都称为路由事件。 Direct event - 最符合直观感受的就是直接路由事件了。 这是项目本身处理发生的事件的地方。

    4.5K22

    WPF --- 如何重写WPF原生控件样式?

    引言 上一篇中 WPF --- 重写圆角DataGrid样式,因新产品UI需要,重写了一下微软 「WPF」 原生的 DataGrid 的样式,包含如下内容: 基础设置,一些基本背景色,字体颜色等。...比如 ComboBox 控件,我刚开始学习WPF时的时候,我就不理解这个是怎么实现的,我后来还是通过查询微软官方文档 [1]ComboBox Styles and Templates ,文档里给出了...接下来演示一下如何使用Blend获取 ComboBox 的原生样式。 「第一步:」 使用 Blend 创建一个 WPF 项目,在窗体中添加一个 ComboBox 。...在原生的滚动条样式中,纵方向上的滚动条的高度是跟随你窗口的大小和内容的多少而改变的,窗口大内容少,滚动条的高度就越大,反之亦然。...我调试了很久,包括重写 Thumb 的样式,修改 Thumb 的高度,都一直不生效,最后在官方文档 [2]How to: Customize the Thumb Size on a ScrollBar

    1.9K20

    基于WPF MVVM的流程编排状态机引擎上位机

    例如:启动→初始化→等待信号→执行动作→检测结果→下一步不同产品需要不同流程不同设备需要不同步骤问题随之而来:1.流程写死在代码中流程一旦改变,就必须修改程序。...二、流程编排+状态机引擎的解决方案基于WPF+MVVM架构开发的设备流程编排状态机引擎上位机,将设备逻辑从代码中彻底解耦。核心理念只有一句话:流程用图配置,逻辑用引擎执行。...五、基于WPFMVVM架构,软件更专业系统采用WPF+MVVM架构开发,具备工业软件级架构优势。...MVVM优势UI与逻辑完全分离View:界面展示ViewModel:业务逻辑Model:设备数据好处:代码结构清晰易于维护支持模块化开发支持的技术能力多线程设备控制PLC通讯(Modbus/TCP/EtherNet...七、零代码配置,适配不同设备设备流程引擎支持动态流程加载:只需要更换配置文件即可切换设备流程,例如:相机测试流程电机测试流程充电器测试流程FCT测试流程老化测试流程无需重新开发软件。

    8100

    一款WPF的小巧MVVM框架——stylet框架初体验

    今天偶然知道有一款叫做stylet的MVVM框架,挺小巧的,特别是它的命令触发方式,简单粗暴,让人感觉很神器。所以接下来我要做一个简单的demo,顺便来分享给大家。...本地创建一个WPF项目,此处我使用.NET 8来创建。然后引用stylet最新的nuget包。...接下来,MVVM的实现,先搞2个简单的控件,一个提供属性MVVM实现,一个提供点击Command命令实现。...ViewModel里面,看下具体代码,和平常大家使用的MVVM双向绑定,有点差异大地方,我圈起来了。...先创建一个测试用的服务类,里面就一个方法,获取消息,返回“Stylet 服务注入~ ”字符串。 启动项的ConfigureIoC方法里面,提供服务的注册。

    1.2K10

    WPF 列表右键菜单比较符合 MVVM 的命令绑定方法

    我不使用小伙伴的逻辑,就按照我自己会采用的写法,我认为这样写比较符合 WPF 框架的设计,下面让我告诉大家我的用法,十分简单 我开源了一个文件下载库,原因是我的几个项目里面都有自己的文件下载库,我想要统一这些文件下载库...GridView 是哪一行,然后弹出右键菜单,设置对应的属性,此时的代码逻辑相对来说很复杂 在 WPF 如此优秀的框架里面怎么也需要提供更清真的方法 先忽略绑定的数据是什么,因为没什么意义。...让右键菜单知道当前选中的是哪个 GridView 的 Row 是很逗比的,因为咱可以使用 WPF 的 DataContext 绑定的方法,让数据一层层分发。...在每一个 GridView 的 Row 项里面都会使用 ListView 的 ItemSource 的数据的某一项,而咱按照 MVVM 的思想,应该变更的是数据而不是界面本身 而 DataContext...bilibili 免费入门视频用项目带你入门 WPF 开发 ---- 本文会经常更新,请阅读原文: https://blog.lindexi.com/post/WPF-%E5%88%

    4.2K20
    领券