
WPF 开发
文章平均质量分 71
如何开发 WPF ,开发中有哪些功能可以用来做出高级的程序
lindexi_gd
我是微软Windows应用开发方向的最具价值专家,欢迎访问我博客blog.lindexi.com里面有大量WPF和UWP博客
展开
-
win10 uwp 选择文本转语音的机器人
在 UWP 里,可以非常方便将某个文本转换为音频语音,转换时,将会根据输入的内容以及本机所安装的语言库选择一位机器人帮忙将输入的文本转换为语音。本文来告诉大家如何切换文本转语音的机器人,例如从默认的女声转换为男声,如选择 Kangkang 或 Huihui 等特定机器人帮助转换语音刚好从卢老师那里接了一个任务,录制 dotnet 的 20 周年的祝贺视频。然而过年生活太好的我嗓子沙哑了,于...原创 2022-02-07 00:40:39 · 1846 阅读 · 0 评论 -
WPF 开源二维绘画小工具 GeometryToolDemo 项目
这是一个演示 WPF 进行二维绘画的小工具 Demo 项目,基于 MIT 协议在 GitHub 上完全开源源作者是 YuWeiCong我只是帮助开源的工具人软件运行界面效果:开源地址: https://github.com/dotnet-campus/GeometryToolDemo我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新...原创 2022-01-29 01:27:10 · 2204 阅读 · 0 评论 -
Windows 通过编辑注册表设置左右手使用习惯更改 Popup 弹出位置
本文告诉大家如何在通过更改注册表的设置,从而更改平板电脑设置 Tablet PC Settings 的左右手使用习惯 Handedness 的惯用左手和惯用右手选项在用户端,可以通过在运行里面,输入 shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E} 按下回车,进入平板电脑设置界面,中文版和英文版界面分别如下这个选项将会影响 WPF 的 P...原创 2022-01-19 00:46:39 · 1546 阅读 · 1 评论 -
WPF 引用 UWP 控件 不打包为 MSIX 分发的方法
按照微软的官方文档,大部分的文档都会说如果用了 XAML Islands 等技术的时候,需要新建一个打包项目,将 WPF 应用打包为 msix 等才可以进行分发和使用。但是实际上不打包也可以,此时可以和此前的 Win32 应用一样的分发方式进行分发,可以支持到 Win7 系统,当然了在 Win7 系统上可用不了 UWP 的控件,但是至少应用软件自身可以在 Win7 继续运行的。可以通过判断系统版本决定功能是否开放,如是 Win10 版本,那么开放 UWP 控件部分的使用原创 2021-07-30 00:32:44 · 889 阅读 · 0 评论 -
WPF 通过 Windows Template Studio 快速搭建项目框架和上手项目
本文对新手友好。在咱开始一个新项目的时候,可以利用 Windows Template Studio 快速搭建整个项目的框架。搭建出来的框架比较现代化,适合想要快速开发一个项目的大佬使用,也适合小白入门学习如何开发应用原创 2021-08-07 03:24:48 · 1045 阅读 · 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 简单判断主线程界面是否卡顿的方法
本文来告诉大家如何使用简单的代码判断当前的软件的 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 评论 -
WPF 如何找到资源文件路径包含 # 号的文件
本文告诉大家如何在 WPF 获取资源文件包含 # 号的文件资源我遇到一个有意思的设计师小伙伴,他的文件命名喜欢使用 #数字 的方式命名,例如写一个图片文件,他的命名是 Image#1.png 和 Image#2.png 的格式如果在 WPF 中拖入的图片,通过属性设置作为资源,默认是可以在 XAML 里面进行引用,使用相对或绝对路径引用,如下面代码 <Grid> &...原创 2021-07-06 00:34:33 · 816 阅读 · 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 在窗口的 Deactivated 使用 Mouse 的 Capture 将会让进程失去交互
如果在某个窗口的 Deactivated 事件里面,使用 Mouse.Capture 方法,让这个窗口重新捕获鼠标,那么将会让进程的所有窗口都失去鼠标交互,点击无效,只有在切换到其他进程的窗口之后,才能让窗口继续交互实现这个坑的逻辑很简单,假定有两个窗口,分别是 MainWindow 和 Window1 两个窗口,在 Window1 的 Deactivated 事件里面,使用 Mouse.C...原创 2021-06-07 00:55:59 · 757 阅读 · 0 评论 -
Win32 使用 SetCurrentProcessExplicitAppUserModelID 关联多个进程 在任务栏合并 WPF 多进程窗口
我有一个 WPF 应用,这是一个绿色软件,会被用户拷贝这和那的文件夹,我期望在多个文件夹里面打开的进程,在任务栏里面都可以将窗口进行合并。使用 Win32 的 Shell32.dll 提供的 SetCurrentProcessExplicitAppUserModelID 可以显设置应用的 Application User Model ID 从而让在多个不同的路径打开的应用,使用相同的 Id 而在任...原创 2021-05-29 09:28:31 · 1581 阅读 · 0 评论 -
dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
本文来安利大家一个有趣而且强大的库,通过 F# 和 C# 混合编程编写 WPF 应用,可以在 WPF 中使用到 F# 强大的数据处理能力在 GitHub 上完全开源 Elmish.WPF 库,请看 https://github.com/elmish/Elmish.WPF在阅读本文之前,我期望大家已了解部分 F# 的知识。在学会 C# 基础知识之下,了解 F# 基础知识是很快的,而本文也仅仅...原创 2021-05-19 00:34:01 · 1007 阅读 · 3 评论 -
WPF 给类库设置设计时使用的资源字典
在开发 WPF 类库时,由于类库里面没有存在 App.xaml.cs 文件,而在对单个 XAML 进行开发时,设计器将会因为找不到资源文件的存在,而拿不到资源。本文告诉大家简单的方法,给设计器设置仅在设计时引用的资源在 WPF 的 XAML 中,如果对每个 XAML 控件都引用相同的资源,此时设计时将可以愉快的跑起来,然而在运行时将会重复创建资源影响性能。在开发 WPF 应用时,在入口项目...原创 2021-04-23 00:58:47 · 1124 阅读 · 0 评论 -
WPF 给 Grid 的辅助方法 添加行列名称绑定
有一些设计师喜欢改改改,界面的整体布局总是变更,如给 Grid 加一列删一行等,每次这样的更改的时候,都需要小心修改 Grid 里面的元素设置的行列序号。我认为在 Grid 简单的时候,当然大多数时候都应该让 Grid 不那么复杂,那么序号的可读性不错。如果 Grid 行列数量比较多,那么此时行列的序号的可读性将会降低,本文来告诉大家一个简单的方法,可以给 Grid 的行列添加名称绑定,让元素绑定...原创 2021-04-10 00:59:38 · 766 阅读 · 0 评论 -
dotnet 使用 ShowMeTheXAML 显示 WPF 的 XAML 控件内容
本文来告诉大家一个好用的控件库,这个控件库可以方便用在自己编写示例项目中使用。使用 ShowMeTheXAML 控件库可以将某段 XAML 内容作为字符串文本内容显示出来,方便让其他开发者看到界面以及对应的内容此控件库 ShowMeTheXAML 不仅支持 WPF 同时也支持 UNO 项目使用此控件的界面逻辑大概如下 <showMeTheXaml:XamlDisplay Uniq...原创 2021-04-01 00:55:09 · 1843 阅读 · 0 评论 -
WPF 通过 Switch.MS.Internal.EnableWeakEventMemoryImprovements 开关开启弱事件内存优化
默认的 WPF 为了保持行为兼容,没有开启弱事件的内存优化。可以在 WPF 中指定 Switch.MS.Internal.EnableWeakEventMemoryImprovements 和 Switch.MS.Internal.EnableCleanupSchedulingImprovements 开关来让 WPF 运行在 .NET Framework 4.8 或 .NET Core 3.0 ...原创 2021-03-24 00:30:25 · 488 阅读 · 0 评论 -
WPF 实现自定义的笔迹橡皮擦
本文来告诉大家使用比较底层的方法来实现 WPF 的笔迹橡皮擦在 WPF 里面,对于笔迹来说,应该放在 Stroke 类里面,而不是作为点的集合存储。在 Stroke 类里面将作为管理笔迹的类提供笔迹的渲染和橡皮擦等功能。咱下面将从 Stroke 类开始,自己定义笔迹橡皮擦。阅读本文,你将了解如何自定义橡皮擦,如自定义橡皮擦的外观样式,了解如何不依赖 InkCanvas 来实现笔迹的擦除原本...原创 2021-03-15 00:43:55 · 1378 阅读 · 2 评论 -
WPF 笔迹触摸点收集工具
本文来安利大家一个工具,可以用来收集笔迹的触摸点,这个工具完全开源在开始之前先看一下工具的界面实现方式其实就在触摸的时候收集触摸点信息,上面的工具有很多功能都没有实现的。笔迹绘制的功能使用 WPF 最简逻辑实现多指顺滑的笔迹书写 博客的方法实现这个工具代码完全开源,可以在 github 或 gitee 下载全部代码更多笔迹相关请看WPF 渲染原理高性能笔迹原理WPF 高性能...原创 2021-03-09 00:46:44 · 443 阅读 · 0 评论 -
WPF 框架开发 更改 API 之后让 CI 重新创建 API 兼容检查基准
本文是记录在开发 WPF 框架遇到的问题。在 WPF 框架里面,限制了 API 的变更,所有关于 API 的变动都会触发 API 兼容检查。只有在明确此 API 变更是合理的之后,才能被接受更改。而此兼容判断将会让一些本地构建失败,本文将告诉大家如何使用官方的方法重新创建 API 基准,让本地构建通过原创 2021-01-29 19:19:45 · 381 阅读 · 0 评论 -
WPF 框架开发 加入 InternalsVisibleToAttribute 特性让其他程序集可以访问 internal 权限成员
在 WPF 框架开发中,其实很少有开发者有足够的勇气去更改现有的框架逻辑,因为 WPF 的功能十分庞大,很难测试全。更多的开发都是加功能以及开放已有功能。整个 WPF 框架的大体设计是十分好的,可以在框架里面遵循对修改关闭的原则,定制化更多的是做注入,调用 internal 权限成员本文告诉大家如何给 WPF 框架加入 InternalsVisibleToAttribute 特性让其他程序集可以访问 internal 权限成员如果我不新加入一个程序集,而是在原有的程序集开发,加上新功能,是否可行原创 2021-01-29 19:17:58 · 609 阅读 · 0 评论 -
WPF 框架开发 WPF 的构建在哪使用到 Perl 工具
在构建 WPF 开源仓库的时候,需要先搭建 Perl 环境,此时大家是否想了解在 WPF 构建的哪里用到 Perl 工具在完全开源的 WPF 仓库里面,其实可以看到很多 Perl 的影子,大部分都是用来做构建的脚本,小部分是在做我也看不懂的逻辑做构建脚本的包括了生成一些代码,如 GenerateAvTraceMessages 这个构建步骤,代码定义如下<Project>...原创 2021-01-13 00:33:30 · 388 阅读 · 0 评论 -
希沃白板如何解决手机端播放课件内视频出现黑屏闪退
使用希沃白板的手机端或微信小程序端播放视频时,会受到手机和微信浏览器的限制,能播放的视频格式有限,请在制作课件时转换好视频格式才进行直播等我最近在使用希沃白板的云直播功能,希沃白板的云直播功能十分好用,特别是可以和学生互动的功能但是有一些调皮的学生告诉我,用希沃白板的微信小程序观看时会出现软件黑屏和闪退,一开始我还以为是调皮的学生在骗我,后续才发现是视频或图片的格式不兼容的问题本文可以...原创 2020-03-28 01:36:21 · 19860 阅读 · 0 评论 -
WPF 已知问题 窗口在屏幕外创建将不会刷新渲染
本文告诉大家一个 WPF 的已知问题,如果窗口在创建的时候,设置在屏幕外,那这个窗口将不会进行实际的渲染,将这个窗口从屏幕外移到屏幕内的时候,将会出现窗口内容的一次闪烁。换句话说就是存在窗口内容的重渲染什么是窗口在屏幕外创建?简单说法就是窗口不在屏幕内,如窗口的 Top 或 Left 太大或太小等,如下面代码创建窗口,而我的屏幕没有那么大,因此窗口就显示在我的屏幕外 pri...原创 2020-10-09 01:45:05 · 676 阅读 · 0 评论 -
WPF 触摸相关
本文整理我写的触摸博客原创 2020-09-26 08:44:52 · 532 阅读 · 0 评论 -
Windows 窗口样式 什么是 WS_EX_NOREDIRECTIONBITMAP 样式
我觉得我可以加入历史博物馆了,加入微软历史博物馆,本文也是和大家吹历史的博客简单说这个 WS_EX_NOREDIRECTIONBITMAP 样式是 Win8 提供的,用来做画面图层混合的功能。什么是画面图层混合功能?详细请看为何使用 DirectComposition玩法就是系统给你一个绘制表面,你在这个绘制表面上进行绘制,然后 DWM (桌面管理器 DWM Desktop Window ...原创 2020-05-02 16:02:31 · 1580 阅读 · 0 评论 -
win10 uwp MVVM入门
MVVM 是一个强大的架构,基本从 WPF 开始,wr(我说的就是微软)就提倡使用 MVVM。它可以将界面和后台分离,让开发人员可以不关心界面是怎样,全心投入到后台代码编写中。然后在编写完后台代码后,可以快速和界面设计师做出来的界面绑定到一起,即使频繁修改界面也几乎不需要去修改后台代码。原创 2017-03-29 08:48:34 · 8519 阅读 · 7 评论 -
C# 从零开始写 SharpDx 应用 控制台创建 Sharpdx 窗口
本文告诉大家如何在控制台使用 SharpDx 创建窗口,这是一个底层的博客,我会用很多博客告诉大家如何从控制台创建一个高性能渲染程序原创 2018-06-29 16:31:00 · 5661 阅读 · 10 评论 -
.net remoting 抛出异常
本文告诉大家如何在使用 .net remoting 的时候,抛出异常原创 2018-08-27 16:18:23 · 793 阅读 · 0 评论 -
WPF 使用 SharpDX
本文告诉大家如何在 WPF 使用 SharpDX ,只是入门原创 2018-08-27 16:30:12 · 4697 阅读 · 9 评论 -
WPF 使用 Edge 浏览器
本文告诉大家如何使用 Windows Community Toolkit 的新控件,在 WPF 使用 Edge 浏览器原创 2018-08-13 15:33:36 · 6726 阅读 · 4 评论 -
Windows Community Toolkit 3.0 新功能 在WinForms 和 WPF 使用 UWP 控件
本文告诉大家一个令人震惊的消息,Windows Community Toolkit 有一个大更新,现在的版本是 3.0 。最大的提升就是 WinForm 和 WPF 程序可以使用部分 UWP 控件 而且可以在 WPF 和 WinForms 使用微软最新 Edge 浏览器翻译 2018-06-01 09:06:45 · 5623 阅读 · 6 评论 -
WPF 使用 Direct2D1 画图入门
本文来告诉大家如何在 WPF 使用 D2D 画图原创 2018-05-21 08:56:52 · 5131 阅读 · 0 评论 -
WPF 使用RPC调用其他进程
如果在 WPF 需要用多进程通信,一个推荐的方法是 WCF ,因为 WCF 是 RPC 计算。先来讲下 RPC (Remote Procedure Call) 远程过程调用,他是通过特定协议,包括 tcp 、http 等对其他进程进行调用的技术。详细请看百度原创 2018-05-19 11:59:06 · 1266 阅读 · 1 评论 -
wpf Textbox 回车就换行
wpf Textbox 回车就换行将 TextWrapping 属性设置为 Wrap 会导致输入的文本在到达 TextBox 控件的边缘时换至新行,必要时会自动扩展 TextBox 控件以便为新行留出空间。将 AcceptsReturn 属性设置为 true 会导致在按 Return 键时插入新行,必要时会再次自动扩展 TextBox 以便为新行留出空间。转载 2015-04-03 11:14:38 · 12670 阅读 · 0 评论 -
WPF C# 字符串读写文件
WPF C# 字符串读写文件public class 字符串读写文件{ /// <summary> /// Encoding.Unicode.GetString 如果使用Encoding.Default.GetString 会错 /// </summary> public 字符串读写文件() {原创 2015-04-03 11:21:15 · 3974 阅读 · 0 评论 -
wpf textblock 长文本滚动
在textblock添加滚动条<ScrollViewer VerticalScrollBarVisibility="Auto"> <TextBlock x:Name="xt" Grid.Row="0" Margin="10,10,10,10" TextWrapping="Wrap" Text="" /> </ScrollViewer> 用一个Scrol原创 2015-04-07 09:48:25 · 14908 阅读 · 6 评论 -
wpf textbox ctrl+enter事件
<TextBox x:Name="xcontent" Text="sfasdf" Grid.Row="0" AcceptsReturn="True" TextWrapping="Wrap" Margin="1,1,1,1" KeyDown="content_key"/>private void content_key(object sender , KeyEventArgs e) {原创 2015-04-07 10:08:28 · 3977 阅读 · 0 评论 -
C# 加密
现在很多人拥有很多网络账号,而很容易不记得自己的账号。所以需要一个地方来保存自己的密码,网上有很多软件,但是信不过,于是开发了自己的加密记事本,用来记录隐秘的文本。 网上保密密码的软件很多,但是不相信,自己写的,强度差也是保密强。 我是用哈希加密。原创 2015-05-01 14:20:56 · 1877 阅读 · 0 评论