
WPF
文章平均质量分 76
lindexi_gd
我是微软Windows应用开发方向的最具价值专家,欢迎访问我博客blog.lindexi.com里面有大量WPF和UWP博客
展开
-
WPF 引用 UWP 控件 不打包为 MSIX 分发的方法
按照微软的官方文档,大部分的文档都会说如果用了 XAML Islands 等技术的时候,需要新建一个打包项目,将 WPF 应用打包为 msix 等才可以进行分发和使用。但是实际上不打包也可以,此时可以和此前的 Win32 应用一样的分发方式进行分发,可以支持到 Win7 系统,当然了在 Win7 系统上可用不了 UWP 的控件,但是至少应用软件自身可以在 Win7 继续运行的。可以通过判断系统版本决定功能是否开放,如是 Win10 版本,那么开放 UWP 控件部分的使用原创 2021-07-30 00:32:44 · 889 阅读 · 0 评论 -
WPF 更改 DrawingVisual 的 RenderOpen 用到的对象的内容将持续影响渲染效果
在 WPF 里面,可以通过 DrawingVisual 来进行使用底层的绘制方法,此方法需要调用 DrawingVisual 的 RenderOpen 拿到 DrawingContext 类型的对象,接着调用此对象的方法来进行界面绘制。在绘制完成之后,如果依然保存绘制过程的对象,例如 Transform 对象,那当界面再次刷新时,如果更改此对象的属性,将会影响渲染原创 2021-08-05 00:52:20 · 734 阅读 · 0 评论 -
WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 做高性能笔迹应用
本文告诉大家如何在 WPF 中应用上 UWP 的笔迹控件,从而实现性能超级高的笔迹应用的方法原创 2021-08-05 00:52:20 · 877 阅读 · 0 评论 -
WPF 被输入法带崩进程
本文记录搜狗输入法某个版本在向 WPF 应用程序输入的时候,让 WPF 应用程序进程退出的问题原创 2021-08-06 00:35:14 · 1312 阅读 · 0 评论 -
WPF 鼠标光标大全
在 WPF 中,可以通过 Cursors 静态类里面的各个预定义属性来设置移入到某个元素时,鼠标光标的外观样式。今天小伙伴问我哪个是鼠标移动控件的鼠标外观属性,在看到 Cursors 静态类里面那么多属性时,我也不知道用哪个好。于是我就写了一个叫鼠标光标大全的应用,可以让大家快速知道有哪些可以用的光标原创 2021-08-07 03:24:48 · 3753 阅读 · 0 评论 -
WPF 基于 .NET 5 框架和 .NET 6 的 SDK 进行完全单文件发布
本文来告诉大家如何基于 .NET 5 框架和 .NET 6 SDK 进行完全单文件发布,这是对 WPF 应用程序进行独立发布,生成的是完全单文件的方法原创 2021-08-07 03:24:48 · 880 阅读 · 0 评论 -
WPF 通过 Windows Template Studio 快速搭建项目框架和上手项目
本文对新手友好。在咱开始一个新项目的时候,可以利用 Windows Template Studio 快速搭建整个项目的框架。搭建出来的框架比较现代化,适合想要快速开发一个项目的大佬使用,也适合小白入门学习如何开发应用原创 2021-08-07 03:24:48 · 1045 阅读 · 0 评论 -
WPF 稳定的全屏化窗口方法
本文来告诉大家在 WPF 中,设置窗口全屏化的一个稳定的设置方法。在设置窗口全屏的时候,经常遇到的问题就是应用程序虽然设置最大化加无边框,但是此方式经常会有任务栏冒出来,或者说窗口没有贴屏幕的边。本文的方法是基于 Win32 的,由 lsj 提供的方法,当前已在 500 多万台设备上稳定运行超过半年时间,只有很少的电脑才偶尔出现任务栏不消失的情况原创 2021-08-13 00:35:38 · 1112 阅读 · 0 评论 -
WPF 基于 WER 注册应用崩溃无响应回调和重启方法
本文来告诉大家如何在 Windows 上利用从 Vista 引入的 Windows Error Reporting (WER) 机制来实现,在应用崩溃、无响应等异常的时候收到回调用于处理信息保存在 《Application Recovery and Restart Reference》 里可以了解到可以通过 Application Recovery and Restart (ARR) 技术...原创 2021-08-16 01:12:12 · 833 阅读 · 0 评论 -
WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 时加上背景色和按钮方法
本文来告诉大家如何在 WPF 应用 HOST 了 UWP 的 InkCanvas 控件时,给 InkCanvas 控件设置背景色,加上按钮等业务功能的实现方法原创 2021-08-19 00:33:58 · 574 阅读 · 0 评论 -
dotnet OpenXML 形状的 Outline 的 LineWidth 线条轮廓粗细宽度的行为
本文来和大家聊聊 OpenXML 里面的给 PPT 用的形状里面的线条宽度的定义,以及在 PowerPoint 上的行为本文属于 OpenXML 系列博客,前后文请参阅 Office 使用 OpenXML SDK 解析文档博客目录在 OpenXML 里面,定义形状的轮廓是通过 a:ln 也就是 OpenXML SDK 里面定义的 DocumentFormat.OpenXml.Drawin...原创 2021-07-27 00:56:29 · 467 阅读 · 0 评论 -
VisualStudio 调试时会不断刷新 WPF 应用渲染
在 VisualStudio 附加调试和没有用 VisualStudio 附加调试时,对应用程序是有不同的影响,如 VisualStudio 设计器将会在附加调试 WPF 应用的时候,不断刷新 WPF 应用的渲染。也就是说,如果你觉得界面视觉效果不对或者对,也许可以甩锅到 VisualStudio 上原创 2021-09-08 00:37:27 · 1556 阅读 · 0 评论 -
dotnet C# 如何正确获取藏文的字数
在咱国内有很多有趣的文字,其中藏文属于有趣的文字里面特别有趣的一项,特别是对于做文本库的同学,大概都知道什么叫合写字吧。合写字的含义就是多个字符一起组成一个字。但是多个字符在内存中,本身就是多个字符对象,以往统计某个字符串的字数,咱简单判断只是拿字符串的字符数量进行获取。这个方法在藏文下肯定是不可行的,藏文的一个字由多个字符组成,因此需要本文介绍的特别的方法原创 2021-09-04 00:30:10 · 1536 阅读 · 1 评论 -
dotnet OpenXML 读取 PPT 内嵌 ole 格式 Excel 表格的信息
在 Office 中,可以在 PPT 里面插入表格,插入表格有好多不同的方法,对应 OpenXML 文档存储的更多不同的方式。本文来介绍如何读取 PPT 内嵌 ole 格式的 xls+ 表格的方法在 Office 的 PPT 中,插入表格可以对应多个不同的方式:通过 GraphicData 内嵌到 PPTX 页面里面通过嵌入文件方式通过 SmartArt 模拟的表格,本质上就是 S...原创 2021-09-04 00:30:10 · 2609 阅读 · 0 评论 -
WPF 推荐一个剪贴板内容查看工具
本文来安利大家一个好用的 Windows 剪贴板的内容查看工具这是在 GitHub 上完全免费开源的应用,由 walterlv 开发的应用,详细请看 https://github.com/walterlv/ClipboardViewer应用软件运行的界面如下:下载地址:GitHub 优快云使用方法是点击软件的查看剪贴板内容按钮,即可在界面里面列举出剪贴板包含的内容我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看原创 2021-09-04 00:30:10 · 1434 阅读 · 0 评论 -
WPF 简单判断主线程界面是否卡顿的方法
本文来告诉大家如何使用简单的代码判断当前的软件的 UI 线程或界面是否卡顿在后台线程调用如下代码即可用来判断是否卡顿 private static async Task<bool> CheckDispatcherHangAsync(Dispatcher dispatcher) { var taskCompletionSou...原创 2021-09-04 00:30:10 · 2054 阅读 · 0 评论 -
dotnet C# 根据椭圆长度和宽度和旋转角计算出椭圆中心点的方法
本文来告诉大家如何根据椭圆长度和宽度和旋转角计算出椭圆中心点的方法方法很简单,请看代码 /// <summary> /// 辅助进行椭圆点计算的类 /// </summary> /// 我觉得这个类应该是框架有带,或现成的方法,但是一时间没找到 static class EllipseCoordinateHelper ...原创 2021-08-30 12:20:39 · 1655 阅读 · 0 评论 -
dotnet 在 WPF 里显示数学 π 的颜色
有逗比小伙伴问我,数学的 π 视觉效果是啥。于是我就来写一个逗比的应用将 π 的颜色在 WPF 应用画出来。原理就是读取 π 的小数点后的数值,然后使用逗比算法转换为 RGB 颜色像素,接着将这些像素转换为一张图片以下就是我用程序生成的 π 图片我先从某个有趣的地方随便找到了 π 小数点之后很长的数值,接下来将这个数值存放作为字符串,再对这个字符串执行如下算法读取两个 0-9 的...原创 2021-08-27 00:55:26 · 431 阅读 · 0 评论 -
WPF 如何获取有哪些 VisualBrush 用了某个控件
我写了一个特殊的控件,我期望了解到有哪些 VisualBrush 捕获了此控件,或者说有哪些 VisualBrush 用了此控件的界面本文的方法需要用到反射,需要使用 WPF 框架里面没有公开的字段获取某个 Visual 控件被引用的 VisualBrush 有哪些,代码如下 class MyUserControl : UserControl { publi...原创 2021-08-27 00:55:26 · 499 阅读 · 0 评论 -
WPF 如何找到资源文件路径包含 # 号的文件
本文告诉大家如何在 WPF 获取资源文件包含 # 号的文件资源我遇到一个有意思的设计师小伙伴,他的文件命名喜欢使用 #数字 的方式命名,例如写一个图片文件,他的命名是 Image#1.png 和 Image#2.png 的格式如果在 WPF 中拖入的图片,通过属性设置作为资源,默认是可以在 XAML 里面进行引用,使用相对或绝对路径引用,如下面代码 <Grid> &...原创 2021-07-06 00:34:33 · 816 阅读 · 0 评论 -
dotnet C# 字典 Dictionary 和 Hashtable 的性能对比
如果没有特别的需求,请使用 Dictionary 而不是 Hashtable 原因是 Dictionary 的性能更好,本文将告诉大家 Stephen Toub 大佬的评测从 2021 的 6 月 23 日,在 WPF 仓库里面,开始看到了性能优化狂魔 Stephen Toub 大佬给 WPF 做的性能优化如在 Use Dictionary instead of Hashtable in ...原创 2021-06-25 00:39:20 · 1302 阅读 · 0 评论 -
WPF 下拉框选项做鼠标 Hover 预览效果
本文来告诉大家如何在 WPF 中,在 下拉框 ComboBox 里面,鼠标移动到 ComboBoxItem 上时,自动触发对应的事件,用来预览此选项值。例如我在实现一个颜色下拉框,此时我可以通过点击下拉框显示多个不同的颜色,鼠标移动到某个颜色选项上,可以修改界面,预览此颜色的内容大概的界面如下图,点击右边的颜色下拉框,可以显示多个不同的颜色,而鼠标移动到下拉框的选项上,可以自动让文标的颜色进...原创 2021-06-23 01:07:44 · 944 阅读 · 0 评论 -
WPF 某个界面或控件在界面找不到看不到可能的原因
本文来告诉大家在 WPF 开发中,发现有某个按钮或某个控件,某个预期的界面,没有在窗口或者没有在界面里面看到或者找到可能的原因和调试的方法不在视觉树如果控件在界面看不到,首先需要通过视觉树了解控件是否还在视觉树上一个不存在视觉树的控件,肯定不会在界面中显示调试某个控件元素是否在 WPF 界面的视觉树上,可以通过 VisualStudio 的实时可视化树功能进行调试如果已进入后台断点,...原创 2021-06-15 00:37:08 · 4778 阅读 · 0 评论 -
WPF 框架开发 调试和开发 XAML 构建过程的 PresentationBuildTasks 方法
阅读本文,你可以了解如何编写开发和调试 XAML 构建为 Baml 和 g.cs 文件的过程和工具。本文也适合想要了解 WPF 的 XAML 构建过程的开发者阅读,本文提供了可以断点调试 WPF 的 XAML 构建过程的方法和代码本文非新手友好,有大量构建和预编译知识,请在阅读本文之前自行了解这部分知识。更多请看 手把手教你写 Roslyn 修改编译在 WPF 中,构建 XAML 用的是...原创 2021-06-10 11:17:00 · 706 阅读 · 2 评论 -
WPF 如何知道当前有多少个 DispatcherTimer 在运行
在 WPF 调试中,对于 DispatcherTimer 定时器的执行,没有直观的调试方法。本文来告诉大家如何在 WPF 中调试当前主线程有多少个 DispatcherTimer 在运行在 WPF 中,如果有 DispatcherTimer 定时器在执行,将会影响到主线程的执行,将会让主线程诡异忙碌。或者有 DispatcherTimer 定时器忘记订阅 Tick 同时也忘记设置时间,将会...原创 2021-06-08 11:45:45 · 493 阅读 · 0 评论 -
WPF 的 DefaultEventAttribute 有什么作用
在自定义 WPF 控件库时,可以看到有一些控件会加上 DefaultEventAttribute 特性,通过这个特性可以告诉 XAML 编辑器,默认创建的事件是什么如编写一个 UserControl1 的用户自定义控件,可以在 xaml.cs 代码加上此特性 [DefaultEvent("Foo")] public partial class UserCont...原创 2021-06-07 00:55:59 · 420 阅读 · 0 评论 -
dotnet 读 WPF 源代码 Popup 的 StaysOpen 为 false 将会吃掉其他窗口的首次激活
在 WPF 中,使用 Popup 控件,可以设置 StaysOpen 属性来控制是否在 Popup 失去焦点时,也就是点击界面空白处,自动收起 Popup 控件。但如果有两个窗口,在设置 Popup 控件的 StaysOpen 属性为 false 那么将会吃掉在点击其他窗口的第一次交互,如鼠标点击或触摸点击时将不会让本进程的其他窗口 Activate 激活在 WPF 中,通过 Popup ...原创 2021-06-07 00:55:59 · 1516 阅读 · 0 评论 -
WPF 在窗口的 Deactivated 使用 Mouse 的 Capture 将会让进程失去交互
如果在某个窗口的 Deactivated 事件里面,使用 Mouse.Capture 方法,让这个窗口重新捕获鼠标,那么将会让进程的所有窗口都失去鼠标交互,点击无效,只有在切换到其他进程的窗口之后,才能让窗口继续交互实现这个坑的逻辑很简单,假定有两个窗口,分别是 MainWindow 和 Window1 两个窗口,在 Window1 的 Deactivated 事件里面,使用 Mouse.C...原创 2021-06-07 00:55:59 · 757 阅读 · 0 评论 -
WPF 用到的触摸的 COM 接口
本文记录 WPF 用到的触摸的 COM 接口消息用到了 WM_TABLET_ADDED 和 WM_TABLET_DELETED 消息使用的代码是 src\Microsoft.DotNet.Wpf\src\PresentationCore\System\Windows\Input\Stylus\Wisp\WispLogic.cs 的 HandleMessage 方法 int...原创 2021-05-23 00:49:44 · 488 阅读 · 0 评论 -
WPF 列表控件数据源绑定多个数据集合方法
在 WPF 用的多的列表控件如 ListBox 或 ListView 等,本文告诉大家在这些列表控件上进行绑定多个数据集合来源的多个实现方法。如有一个显示动物列表的控件,需要绑定的数据来源是阿猫和阿狗两个 ObservableCollection 列表,不在后台代码编写合并集合的代码情况下,可以通过 XAML 的编写,绑定多个数据集合准备在开始之前,咱先搭建一点测试使用的代码,假定咱有一个...原创 2021-05-22 02:38:48 · 2358 阅读 · 0 评论 -
WPF 已知问题 BitmapDecoder.Create 不支持传入 Asynchronous 的文件流
这是在 GitHub 上有小伙伴报的问题,在 WPF 中,不支持调用 BitmapDecoder.Create 方法,传入的 FileStream 是配置了 FileOptions.Asynchronous 选项的文件流。本质原因是 WIC 层不支持,和 WPF 没有关系GitHub 链接: BitmapDecoder.Create does not handle FileStream w...原创 2021-05-15 01:12:38 · 462 阅读 · 0 评论 -
WPF 适合入门阅读的开源项目 SeeGit 图形化 Git 历史记录
本文来安利大家一个不错的开源项目,这个开源项目整体写的不错,也有用到 MVVM 框架,项目组织以及命名等都还行,功能也实现完全,适合入门级阅读这是一个在 GitHub 上完全开源的项目,请看 haacked/seegit: SeeGit - The Git Repository Visualizer运行界面如 GitHub 首页所示这个仓库使用了 QuikGraph 和 GraphSha...原创 2021-05-13 00:47:53 · 516 阅读 · 0 评论 -
WPF 如何知道当前有多少个 DispatcherTime 在运行
在 WPF 调试中,对于 DispatcherTimer 定时器的执行,没有直观的调试方法。本文来告诉大家如何在 WPF 中调试当前主线程有多少个 DispatcherTimer 在运行在 WPF 中,如果有 DispatcherTimer 定时器在执行,将会影响到主线程的执行,将会让主线程诡异忙碌。或者有 DispatcherTimer 定时器忘记订阅 Tick 同时也忘记设置时间,将会...原创 2021-04-28 00:50:24 · 429 阅读 · 0 评论 -
dotnet 读 WPF 源代码笔记 WriteableBitmap 的渲染和更新是如何实现
在 WPF 框架提供方便进行像素读写的 WriteableBitmap 类,本文来告诉大家在咱写下像素到 WriteableBitmap 渲染,底层的逻辑之前我使用 WriteableBitmap 进行 CPU 高性能绘图时,在性能调试遇到一个问题,写入到 WriteableBitmap 的像素会经过两次拷贝。其中一次是我自己拷贝到 WriteableBitmap 而另一次拷贝就在 Wri...原创 2021-04-20 01:15:53 · 801 阅读 · 0 评论 -
dotnet 读 WPF 源代码笔记 了解 WPF 已知问题 后台线程创建 WriteableBitmap 锁住主线程
在 WPF 中,如果在没有开启 Dispatcher 的后台线程里面创建 WriteableBitmap 对象,在 WriteableBitmap 构造函数传入在主线程创建的 BitmapSource 也许就会锁住主线程。本文将通过 WPF 框架源代码告诉大家为什么会锁住主线程这是在 WPF 开源仓库上一个小伙伴报的,详细请看 WriteableBitmap hangs when sourc...原创 2021-04-17 00:33:00 · 634 阅读 · 0 评论 -
WPF 将 SVG 转 XAML 的工具
团队的设计师喜欢输出 SVG 格式的图片,而咱如果想要在 WPF 中高性能呈现出来,最好还是转换为 XAML 代码。本文来安利大家一些 SVG 转 XAML 的工具本文将按照推荐的顺序,最前面的是最推荐的,来告诉大家一些工具SharpVectors这是名气很大的工具,当然这也是一个库。通过这个库可以在 dotnet 系的客户端应用,如 WPF 和 UWP 等呈现 SVG 内容,这个库里面...原创 2021-04-13 00:53:30 · 2235 阅读 · 2 评论 -
WPF 使用 Behavior 库辅助获取动态资源变更事件
在 WPF 开发中,可以使用 Behavior 库辅助,监听某个动态资源变更的事件,从而了解到是在哪个模块变更了动态资源,或者根据动态资源的变更而进行界面修改在 WPF 的动态资源机制里面,如果某个依赖属性给定了动态资源,那么在动态资源变更的时候,将会重新给属性赋值。通过这个机制,就可以在业务逻辑上,通过添加一个依赖属性,绑定到需要监听变更的动态资源上,那么这个依赖属性将会收到变更通知在...原创 2021-04-13 00:53:30 · 679 阅读 · 0 评论 -
Windows 下的 WPF 开发 调试应用程序在什么时机加载了 Dll 模块
在尝试优化性能的时候,如何可以了解到在应用程序启动的过程中,在什么步骤开始加载了某些 Dll 文件在 VisualStudio 的 调试->窗口->模块 可以看到当前应用程序加载的所有模块,也就是应用程序加载了哪些 Dll 文件一个调试方法是在合适的逻辑里面添加断点,或者在软件启动完成之后,通过模块了解应用程序加载了哪些 DLL 文件,从而了解应用程序启动慢是否因为加载了不应该...原创 2021-04-09 01:31:01 · 474 阅读 · 0 评论 -
dotnet 读 WPF 源代码笔记 默认的 Main 函数是在哪创建的
在使用默认的 WPF 项目开发的时候,咱是不需要自己编写 Main 函数的,在 WPF 中的 Main 函数是存放在 App.g.cs 里面,看起来这个 Main 函数是生成的函数,本文将介绍在 WPF 框架中是如何创建这个入口函数阅读本文你将了解 WPF 框架中,默认在 App.g.cs 生成入口 Main 函数的详细过程。阅读本文之前,你需要了解一些编译过程的知识以及代码生成的知识默...原创 2021-03-30 00:32:36 · 546 阅读 · 0 评论 -
dotnet 读 WPF 源代码笔记 为什么设置了SplashScreen会让Application.Current.Activated事件不触发
在 WPF 应用中,可以非常方便将一张图片设置为 SplashScreen 启动界面欢迎图,但是如果有设置了启动界面欢迎界面,那么 Application.Current.Activated 事件就不会被触发。本文通过 WPF 框架开源的代码告诉大家这个原因这是在 GitHub 上,一个小伙伴问的问题,详细请看 After adding a splashscreen Applicatio...原创 2021-03-25 02:04:15 · 504 阅读 · 0 评论