首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

再后来接触到了MVVM,更加体会到了以MVVM模式开发WPF带来的好处。现在除非要求已经不再用Winform了,小工具和测试程序直接在后台写代码,复杂一点的需要长期使用和维护的用MVVM模式。...0x01 MVVM模式简介 MVVM是Model、View、ViewModel的简写,这种模式的引入就是使用ViewModel来降低View和Model的耦合,说是降低View和Model的耦合。...0x02 WPFMVVM的解耦方式 WPFMVVM模式,View和ViewModel之间数据和命令的关联都是通过绑定实现的,绑定后View和ViewModel并不产生直接的依赖。...这样测试Command时也不需要View的参与。这也是我接触WPF初期时根本理解不了的所谓数据驱动。...最后还是要说一下任何设计模式都是参考,都有使用场景,切忌生搬硬套。实际开发应根据项目特点采取适配性更强的模式。

1.5K20

WPF 实现融合效果

之前的一篇文章,我使用 Win2D 实现了融合效果,效果如下: 不过 Win2D 不适用于 WPF WPF 可以使用 BlurEffect 配合自定义 Effect 实现类似的效果。...自定义 Effect Win2D ,实现融合效果的步骤是先使用 GaussianBlurEffect 两个元素间产生粘连在一起的半透明像素,再用 ColorMatrixEffect 加强对比对,... WPF 我们可以直接使用自带的 BlurEffect 实现高斯模糊,效果如下: 接下来需要加强对比度。...WPF 没有 ColorMatrixEffect 的替代品,不过我们可以使用 HLSL(高级着色器语言)编写 PixelShader 并生成自定义的 WPF Effect。...编写 PixelShader 可以使用 Shazzam Shader Editor, walterlv 有一篇关于如何使用这款编辑器的教程: WPF 像素着色器入门:使用 Shazzam Shader

1.2K20

WindowsXamlHost: WPF使用 UWP 控件库的控件

WindowsXamlHost: WPF使用 UWP 的控件(Windows Community Toolkit) 一文,我们说到了 WPF 引入简单的 UWP 控件以及相关的注意事项...image.png ▲ 创建一个 UWP 控件库 image.png ▲ 选择 SDK 版本 对 WPF 项目的准备工作 你依然需要阅读 WindowsXamlHost: WPF使用...image.png ▲ 生成的文件已复制到 WPF 目录下 WPF 项目中间接引用 UWP 控件库 现在, WPF 项目中开启所有文件夹的显示,然后将 UWP 项目中生成的文件添加到 WPF...项目中: image.png ▲ WPF 的项目中添加 UWP 的控件库 为了能够每次编译 WPF 项目的时候确保 UWP 项目先编译,需要为 WPF 项目设置项目依赖。... WPF 项目中使用 UWP 控件库的控件 这时, WindowsXamlHost 中就可以添加 UWP 控件库的 MainPage 了。

5.8K20

Google 推荐 MVVM 架构中使用 Kotlin Flow

Jetpack + MVVM 实战应用,和神奇宝贝(PokemonGo) 有很多不同之处,神奇宝贝(PokemonGo) 主要偏向于 Paging3 的分页处理,以及 Flow MVVM 的实战...Google 推荐 MVVM 使用 Kotlin Flow Google 推荐 MVVM使用 Kotlin Flow我相信如今几乎所有的 Android 开发者至少都听过 MVVM 架构,...) 文章的示例,也 Repositories 或者 DataSource 中使用 LiveData,以至于很多开源的 MVVM 项目中也是直接使用 LiveData,但是 Repositories...Kotlin Flow Repositories 使用 如果我们想在 Flow 中使用 Retrofit 或者 Room 进行网络请求或者查询数据库的操作,我们需要将使用 suspend 修饰符的操作放到...Kotlin Flow ViewModel 使用 ViewModel 中使用 Flow 之前 Jetpack 成员 Paging3 实践以及源码分析(一) 文章也有提到, 这里我们深入分析一下

4.1K20

WPF DrawingContext 的 push 如何使用

简单的方法就是使用 PushTransform 方法,那么如何使用这个方法就是本文要告诉大家的。...先写一个简单的 OnRender ,创建一个类 GearcawralSarBule 继承 FrameworkElement 就可以重写 OnRender 方法,为了让WPF调用 OnRender 方法就需要把...如果有玩过 ps 就知道, ps 有图层,使用 DrawingContext 的 push 方法就是创建一个图层,而且做的变换都是对这个图层做变换,使用 push 创建图层之后需要使用 pop 把图层画进去...push 需要在画完使用 pop ,不然会出现下面继续对 DrawingVisual 进行画的时候就会发现还是原先的图层 除了 PushTransform 方法还有很多 push 方法,如 PushClip...drawingContext.PushOpacity(0.09); drawingContext.DrawDrawing(DrawingVisual.Drawing); 还有一个 PushGuidelineSet 参见:WPF

1.6K10

WPF DrawingContext 的 push 如何使用

简单的方法就是使用 PushTransform 方法,那么如何使用这个方法就是本文要告诉大家的。...先写一个简单的 OnRender ,创建一个类 GearcawralSarBule 继承 FrameworkElement 就可以重写 OnRender 方法,为了让WPF调用 OnRender 方法就需要把...如果有玩过 ps 就知道, ps 有图层,使用 DrawingContext 的 push 方法就是创建一个图层,而且做的变换都是对这个图层做变换,使用 push 创建图层之后需要使用 pop 把图层画进去...push 需要在画完使用 pop ,不然会出现下面继续对 DrawingVisual 进行画的时候就会发现还是原先的图层 除了 PushTransform 方法还有很多 push 方法,如 PushClip...drawingContext.PushOpacity(0.09); drawingContext.DrawDrawing(DrawingVisual.Drawing); 还有一个 PushGuidelineSet 参见:WPF

41820

WPF框架教程 | 从0到1:使用Caliburn.Micro(WPFMVVM)开发简单的计算器

之前时间一直使用Caliburn.Micro这种应用了MVVM模式的WPF框架做开发,是时候总结一下了。...Caliburn.Micro(https://blog.csdn.net/lzuacm/article/details/78886436)是一个轻量级的WPF框架,简化了WPF的不少用法,推荐做WPF...比如本文将介绍如何使用Caliburn.Micro v3.2开发出一个简单的计算器,里面用到了C#的async异步技术,Caliburn.Micro的Conductor等等~ >>>1.VS创建...WPF项目<<< >>>2.使用NuGet包管理工具为当前项目安装Caliburn.Micro <<< 对于Caliburn.Micro 1.x和2.x版,只能使用.dll,需手动给项目加Reference...项目目录下新建Models, ViewModels, Views这3个文件夹 ViewModel文件夹添加ShellViewModel.cs,并创建Left, Right和Result这3个属性。

4.2K10

WPF 绑定命令 MVVM 的 CanExecute 和 Execute 在按钮点击都没触发可能的原因

WPF 推荐使用 MVVM 绑定命令,但是绑定命令会存在很多坑,其中一个就是焦点的问题。...如果在用户点击按钮的时候出现了焦点修改,那么此时的命令是不会被触发 命令绑定按钮点击的时候,会触发按钮拿到键盘焦点,此时其他元素如果之前有拿到焦点,那么会触发元素失去焦点。...如果在元素一次 Dispatcher 的过程重新拿到焦点,那么按钮的命令将不会被触发 说起来复杂,因为项目的代码是很复杂很难直接看到这个问题,所以我建议创建一个新的 WPF 项目,不要引用任何小伙伴框架...CanExecute 打上断点,可以发现连 CanExecute 都没有进入 如果遇到了在按钮 MVVM 绑定命令,发现命令没有触发,同时 CanExecute 都没有进入,可以猜可能是命令没有初始化...、命令没有绑对,还有可能是在过程出现焦点问题 另外不一定是用户直接调用 Focus 其他的 WPF 控件间接修改 源代码放在 github

1.6K20

.NET Core 3.0WPF使用IOC图文教程

我们都知道.NET Core 3.0已经发布了第六个预览版,我们也知道.NET Core 3.0现在已经支持创建WPF项目了,刚好今天写一个代码生成器的客户端的时候用到了WPF,所以就把WPF创建以及使用...StoneGenerate.Core.csproj" /> 创建一个ITextService接口服务,这个接口将由依赖注入容器注入到MainWindow类中进行使用...{ _text = text; } public string GetText() { return _text; } } 接下来我们的入口...App.xaml.cs文件配置我们的IOC容器,并入住我们的服务,相信做过.NET Core项目的你,对下面的代码应该都非常的熟悉,这里就不过多的解释了,省的浪费大家的宝贵时间。...serviceProvider.GetRequiredService(); main.Show(); } 当然,这也就意味着你得移除App.xmal的启动选项

81330

WPF桌面程序中使用ECharts展示图表

WPF桌面系统需要实现仪表盘(dashboard是商业智能仪表盘(business intelligence dashboard,BI dashboard)的简称,它是一般商业智能都拥有的实现数据可视化的模块...问题来了,ECharts是个前端JS库,只支持页面上使用,要使用ECharts组件,可以WPF窗体Host一个WebBrowser控件,然后挂接本地运行目录的页面来实现。...步骤: 1、去ECharts官网下载ECharts库和相关示例 页面,复制到exe运行文件目录。 ? 2、创建一个WPF项目,增加一个View类。...因为WebBrowser控件是个Windows Form控件,WPF窗体不能直接运行WinForm控件,然后WPF窗体上添加WindowsFormsHost控件,此WindowsFormsHost控件可作为...3、使用ECharts包装的控件WPF窗体展示图表,使用起来非常简单,把控件放到需要展示图表的窗体EyChartView_Initialized方法并把参数传递给图表控件来控制图表的样式、大小及数据内容等

2.9K30

WPF 程序应用 Windows 10 真•亚克力效果

本文介绍如何在 WPF 程序应用 Windows 10 真•亚克力效果。(而不是一些流行的项目里面自己绘制的亚克力效果。)...---- API 需要使用的 API 是微软的文档并未公开的 SetWindowCompositionAttribute。...我另一篇博客中有介绍此 API 各种用法的效果,详见: 使用 SetWindowCompositionAttribute 来控制程序的窗口边框和背景(可以做 Acrylic 亚克力效果、模糊效果、主题色效果等...) - walterlv 当然,使用此 API 也可以做 Windows 10 早期的模糊效果,比如: Windows 10 上为 WPF 窗口添加模糊特效(就像开始菜单和操作中心那样) - walterlv...- Stack Overflow 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/using-acrylic-in-wpf-application.html

36910

使用 Uno Islands 现有 WPF 里面嵌入 Uno 框架

随着 2022 9 月份 Uno 发布了 4.5 版本,现有的 WPF 应用多了一个新的开发模式,那就是通过 Uno Islands 技术,现有的 WPF 应用里面嵌入 Uno 应用。...通过 Uno Islands 技术,可以 WPF 里面划某个矩形范围,让这个范围内的内容使用 Uno 框架进行绘制和交互。...为了方便演示,接下来新建一个空白的 WPF 项目,在这个空白的 WPF 项目里面,主窗口同时放一个 WPF 的控件和一个用来承载 Uno 框架的 UnoXamlHost 控件,以及新建一个共享项目,共享项目里面存放...Uno 框架的项目,接下来就是刚才创建的 WPF 项目里面,嵌入这个 Uno 项目的内容 刚才新建的 WPF 项目里面,添加共享项目的引用,引用刚才创建的共享项目,接着为了解决 Uno 的字体问题...开始之前, XAML 加上命名空间 xmlns:xamlHost="clr-namespace:Uno.UI.XamlHost.Skia.Wpf;assembly=Uno.UI.XamlHost.Skia.Wpf

59530
领券