
WPF MVVM
文章平均质量分 93
WPF MVVM入门系列教程
△曉風殘月〆
吾虽浪迹天涯,却未迷失本心。
博客园:https://www.cnblogs.com/zhaotianff github:https://github.com/zhaotianff
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
WPF MVVM入门系列教程(TabControl绑定到列表并单独指定每一页内容)
9 tabList.Add(new TabToolAViewModel() {Detail = "详情...." });我们也可以单独定义每一个Tab页的ViewModel和布局。绑定到一个列表,并单独指定每一个Tab页的标题和内容。接下来我们就可以单独的创建每个Tab页要显示的内容了。此时我们可以创建一个资源字典,并定义数据模板,用于。然后在需要使用的地方,引用 这个资源字典就可以了。有了两个单独的视图以后,如何将它和它们对应的。这个类用于显示Tab页的标题等公共属性。原创 2025-08-22 12:02:12 · 852 阅读 · 0 评论 -
WPF MVVM进阶系列教程(四、ViewModel通信)
本文介绍了三种WPF中ViewModel间通信的方式:1)通过依赖注入直接调用ViewModel,利用DI容器实现单例模式共享实例;2)自定义消息机制,通过注册/发送实现松耦合通信;3)使用CommunityToolkit.MVVM包的WeakReferenceMessenger工具。重点比较了直接调用与消息传递的差异,并演示了自定义消息总线的实现原理。每种方式各有适用场景,推荐使用成熟的第三方工具包以确保稳定性和功能完整性。原创 2025-08-20 09:50:36 · 906 阅读 · 0 评论 -
WPF MVVM进阶系列教程(三、使用依赖注入)
本文介绍了在WPF MVVM开发中使用UnityContainer实现依赖注入(DI)的方法。通过对比非DI和DI两种实现方式,展示了DI如何解耦依赖关系,解决服务类实例重复创建的问题。文章详细演示了UnityContainer的配置过程,包括容器初始化、类型注册和生命周期管理,并介绍了ViewModelLocator模式简化ViewModel绑定的技巧。最后指出DI虽能提高代码可维护性,但也会增加复杂度,开发者应根据实际需求权衡使用。附带相关代码示例和资源链接。原创 2025-08-20 09:48:14 · 787 阅读 · 0 评论 -
WPF MVVM进阶系列教程(二、数据验证)
这篇文章详细介绍了WPF中数据验证(Validation)的实现方式。主要内容包括: 数据验证的基本概念和作用 使用依赖属性进行验证,包括ValidateValueCallback回调的使用 自定义错误模板(ErrorTemplates)的实现 创建自定义验证规则(ValidationRule)的方法 IDataErrorInfo接口的使用和实现细节 验证状态管理(ValidationState)的最佳实践 INotifyDataErrorInfo接口的异步验证实现 文章通过多个实际案例演示了不同验证方式的原创 2025-07-25 09:42:50 · 1134 阅读 · 0 评论 -
WPF MVVM进阶系列教程(一、对话框)
14 <Button Content="显示详情" Width="88" Height="28" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Command="{Binding ShowStudentDetailCommand}"></Button>在单元测试中,我们可以注入一个虚假的对话框服务实例,而不是显示实际的对话框,并使用我们的虚假对象进行预留和模拟。原创 2025-05-07 10:33:29 · 1168 阅读 · 0 评论 -
WPF MVVM入门系列教程(六、ViewModel案例演示)
44 <Button Content="新增" Width="88" Height="28" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Command="{Binding AddBookCommand}"/>30 <Label Content="价格 ¥: " Foreground="Red" FontWeight="Bold"></Label>原创 2025-05-07 10:07:12 · 1280 阅读 · 0 评论 -
WPF MVVM入门系列教程(五、命令和用户输入)
10 <Button Content="按钮3" Name="btn3" Command="{Binding ShowMessageCommand}" CommandParameter="{Binding ElementName=btn3,Path=Content}" VerticalAlignment="Center" Width="128" Height="28" Margin="10"></Button>命令时,我们可以根据需要传递的参数类型,使用对应的泛型参数。原创 2025-05-06 09:24:33 · 1463 阅读 · 0 评论 -
WPF MVVM入门系列教程(四、ViewModel)
SoC 的一个关键目标是尽可能地限制依赖关系,并在必须存在依赖关系的地方在必须存在依赖关系的情况下,将其抽象化,以保护客户端代码不被更改。过于相互依赖的代码是很难维护的,因为一次修改就会破坏无数个部分。最糟糕的代码依赖循环依赖,即两个方法或两个类相互依赖。相互依赖。为了解决循环依赖问题,我们必须确保依赖关系有正确的方向。换句话说,代码从下到上形成一个层次结构,较高层次的代码依赖于较低层次的代码。原创 2025-05-06 09:21:34 · 1299 阅读 · 0 评论 -
WPF MVVM入门系列教程(三、数据绑定)
如果绑定具有正确的设置,并且数据提供适当的通知,则在数据更改其值时,绑定到该数据的元素会自动反映更改。数据绑定还意味着,如果元素中数据的外部表示形式发生更改,则基础数据可以自动进行更新以反映更改。如果你想使用源属性中的某个值来初始化目标属性,且提前不知道数据上下文,则此类型的绑定也有用。绑定,对源属性的更改会自动更新目标属性,但对目标属性的更改不会传播回源属性。)上,当数据进行更改时,绑定的依赖属性值会更新(UI更新)。而当依赖属性的值更改(UI更改)时,绑定的数据也会进行更改。属性来解析数据绑定。原创 2024-11-08 09:14:49 · 1895 阅读 · 0 评论 -
WPF MVVM入门系列教程(二、依赖属性)
通俗点来说,WPF的依赖属性就是在.NET属性的基础上进行的扩展。这一点跟前面的依赖属性有区别。指定此依赖属性的元数据,元数据定义依赖属性在应用于特定类型时的某些行为方面,包括默认值、值更改时的回调等。本文不包括依赖属性内存存储方式、属性取值优先级、属性默认值、属性值更改回调、属性验证等概念,在后面的文章中再进行补充。的第一个参数代表依赖属性的默认值,设置为null,第二个参数是在值更改时的回调函数,这里是调用。说明:本文是介绍WPF中的依赖属性功能,如果对依赖属性已经有了解了,可以浏览后面的文章。原创 2024-11-07 09:09:51 · 1272 阅读 · 0 评论 -
WPF MVVM入门系列教程(一、MVVM模式介绍)
对于这种情况,我们可以直接使用传统操作控件的模式去进行开发,必要时,UI代码和业务代码混在一起也是可以的。阅读到这里,有些小伙伴可能会有很多疑问,但是我们可以先不去看这些技术细节,只在意这样一种开发模式,后面我会将WPF MVVM开发中涉及的各个技术点进行详细讲解。MVVM是在MVC和MVP的基础上,进行了优化,弥补了MVC和MVP在开发过程中的一些不足的地方。对于长期项目,或者稍微偏大一点的项目,这种情况下,建议采用MVVM模式开发,并在前期建议做好充足的准备,进行统一的规划。原创 2024-09-28 22:43:40 · 3412 阅读 · 0 评论