![](https://i-blog.csdnimg.cn/direct/8ed632d0a1ff4e0caa4eed8d59704a9c.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
WPF
文章平均质量分 87
分享各种WPF开发技巧、实用功能。还会有一些入门教程。持续更新中。
△曉風殘月〆
吾虽浪迹天涯,却未迷失本心。
博客园:https://www.cnblogs.com/zhaotianff github:https://github.com/zhaotianff
展开
-
WPF MVVM如何在ViewModel直接操作控件对象
后面的解决办法是在窗口加载时,将控件对象以参数传递到Loaded事件的处理命令中,然后将这个对象记录下来,后面就可以直接操作这个控件了。早些年在WPF中使用COM组件时,需要在ViewModel中操作COM组件中的控件对象,但是这个控件对象又不支持绑定,今天同事在使用WebView2的时候,又遇到这个问题,写个文章分享一下,给后续需要的小伙伴提供点参考。我们创建一个WPF的项目,然后在界面上放置一个WMP控件(Windows Media Player)。原创 2024-09-02 23:58:25 · 921 阅读 · 0 评论 -
WPF中如何根据数据类型使用不同的数据模板
我们在将一个数据集合绑定到列表控件时,有时候想根据不同的数据类型,显示为不同的效果。时,系统文件夹和普通文件夹分别显示为不同的效果,就可以使用模板选择器功能。这里我们定义一个磁盘和文件夹的数据类型,一个磁盘对象可以包含多个文件夹。然后定义一个资源字典,分别在里面定义两种数据的数据模板。,它可以根据数据对象和数据绑定元素来选择。WPF提供了一个模板选择器类型。,根据不同的数据类型返回不同的。例如将一个文件夹集合绑定到。我们先定义如下的数据模型。原创 2024-08-26 17:27:26 · 2057 阅读 · 0 评论 -
WPF中如何使用后台代码动态创建数据模板(DataTemplate)
所以这里采用了工厂模式,工厂模式是一种常见的设计模式 ,它指的是根据给定的参数动态创建类型,以达到解耦的目的。3 list.Add(new Student() { Id = 2, Name = "奎文" });2 list.Add(new Student() {Id = 1,Name = "意在" });对于一些简单的数据,例如一个string,一个int,在显示时,无须额外控制。但是对于复杂数据类型,就需要使用数据模板来控制数据的呈现方式。上,我们就得到一个动态的数据模板(原创 2024-08-25 01:04:53 · 779 阅读 · 0 评论 -
WPF中的XAML是如何转换成对象的?
我跟他说XAML的实现和后台代码实现是一样的,都会转换成对应的对象的,XAML相当于一种助记符,它内部其实还是.cs代码。到这里我们应该很清晰的看到系统是通过Application.LoadComponent函数将XAML读取,并转换成相应的类。我记得以前在哪看到过,XAML最终都是会转换为.cs代码的,但我一下也想不起来了。函数,在前面部分代码中,将XAML转换成一个流,然后再通过这个函数读取流。干脆就直接查一查WPF的内部实现好了,看看XAML是如何转换为对象的。经过查阅资料,我提供了两种解决方案。原创 2024-08-23 15:10:07 · 586 阅读 · 0 评论 -
WPF中的可视化树(VisualTree)和逻辑树(LogicalTree)
4 以上的解释仅仅用于简单理解这两个概念以及区别,完整的解释请参考文末的链接,MSDN上的文档将会更准确。通俗点来讲,就是整个元素的构成树,从最上面的结点到最后一个结点(包括控件模板)。原创 2024-08-22 15:17:36 · 1045 阅读 · 0 评论 -
WPF中如何使用后台代码动态创建数据模板(DataTemplate)
所以这里采用了工厂模式,工厂模式是一种常见的设计模式 ,它指的是根据给定的参数动态创建类型,以达到解耦的目的。3 list.Add(new Student() { Id = 2, Name = "奎文" });2 list.Add(new Student() {Id = 1,Name = "意在" });对于一些简单的数据,例如一个string,一个int,在显示时,无须额外控制。但是对于复杂数据类型,就需要使用数据模板来控制数据的呈现方式。上,我们就得到一个动态的数据模板(原创 2024-08-22 15:15:40 · 1155 阅读 · 0 评论 -
如何封装WPF控件库
如何封装WPF控件库原创 2024-08-19 15:01:17 · 1195 阅读 · 0 评论 -
WPF打印控件内容
这样操作以后,打印的大小不再是整 个窗体的大小了,但打印完之后 ,控件 的位置却发生了变化 ,这时候我们只需要再调用一次Arrange方法,将它放回原来的位置就行了。当我们想打印控件内容时,如一个Grid中的内容,可以用WPF中PrintDialog类的PrintVisual()方法来实现。这时我们会发现,虽然 打印的内容是指定的,但打印的大小却是整个窗体的大小,而不仅仅是指定的区域大小。如果 想对打印机进行设置,可以查找 WPF PrintDialog的使用方法,下面是简单的设置。原创 2024-08-16 13:42:18 · 732 阅读 · 0 评论 -
WPF窗体动态效果
WPF实现窗体动态效果,类似网页上的动态背景效果。原创 2024-08-14 10:40:03 · 1274 阅读 · 0 评论 -
WPF MVVM实现TreeView层级显示
这里其实就是一级一级的定义,比如第一级,使用ItemSource绑定它的下一级列表,然后用一个Label显示当前层级要显示的数据。以前我是直接绑定XML数据到TreeView的,使用的XmlDataProvider,这次的数据是直接来自数据库的。最近在写一个小工具的时候,遇到TreeView的层级显示,刚好我又用了MVVM模式,所以这里做个总结。用到的都是HierarchicalDataTemplate。这里我建立 了三个层级 的数据。在构造函数中创建测试数据。原创 2024-08-06 10:23:43 · 1301 阅读 · 0 评论 -
WPF MVVM模式图片占用问题
如何解决在WPF MVVM模式中图片绑定后文件被占用的问题原创 2024-08-05 09:12:49 · 1110 阅读 · 0 评论 -
WPF中调用UWP API
目前已经有部分UWP控件支持直接在XAML中添加,需要对项目进行一定的配置,这里就不做介绍了,上面两种方式在日常开发中应该够用了。以前在WPF中使用Winform控件时,使用了一个叫做WindowsFormHost的控件,原理是创建一个单独的窗口句柄,然后在上面进行绘制。在最初Windows 8 出来时,这一套新的运行时叫Windows RT,后面到Windows 10时,改成了UWP。所以这里做个总结,如何在WPF中调用UWP的库,以后有需要的时候可以用得到。原创 2024-08-02 09:14:10 · 830 阅读 · 0 评论 -
为WPF按钮添加UAC盾牌图标
在上一篇文章中,介绍了如何获取系统Shell的图标。在C#中调用SHGetStockIconInfo即可获取获取图标。上面的代码中包含了从句柄创建WPF ImageSource的代码,如果对这一块不了解的话,可以参考。SHGetStockIconInfo函数P/Invoke签名。原创 2024-07-30 14:30:17 · 191 阅读 · 0 评论 -
WPF实现边缘停靠效果
这样就可以实现了一个简单的边缘停靠效果。现在只实现了屏幕右侧的边缘停靠,左边和上面可以如法炮制。在XAML里定义了显示和隐藏的动画,窗体定义了两列,第一列就是隐藏时用于显示窗体的热点区域。//是否启用边缘停靠。最近做的某个功能需要用到边缘停靠,WPF实现了下,效果如下。原创 2024-07-29 13:58:34 · 975 阅读 · 0 评论