随笔分类 -  WPF

Windows Presentation Framework
摘要:最近有小伙伴问我如何可以让 Windows 静置一段时间不操作之后,显示一个特殊的界面。我想了想,屏幕保护程序可以做到这一点,而且,屏幕保护程序的开发也是非常简单的。 本文将介绍如何为 Windows 这一悠久的功能进行开发。 本文内容 屏幕保护程序的本质 安装屏幕保护程序 处理屏幕保护程序参数 请 阅读全文
posted @ 2019-01-01 10:57 walterlv 阅读(1391) 评论(0) 推荐(0) 编辑
摘要:WPF 中为了 UI 的跨线程访问,提供了 Dispatcher 线程模型。其 Invoke 方法,无论在哪个线程调用,都可以让传入的方法回到 UI 线程。 然而,如果你在 Lazy 上下文中使用了 Invoke,那么当这个 Lazy<T> 跨线程并发时,极有可能导致死锁。本文将具体说说这个例子。 阅读全文
posted @ 2018-12-23 14:59 walterlv 阅读(2717) 评论(0) 推荐(1) 编辑
摘要:AutoResetEvent、ManualResetEvent、Monitor、lock 等等这些用来做同步的类,如果在异步上下文(await)中使用,需要非常谨慎。 本文将说一个在同步上下文中非常常见的一种用法,换成异步上下文中会产生死锁的问题。 本文内容 一段正常的同步上下文的代码 一个微调即会 阅读全文
posted @ 2018-12-23 14:58 walterlv 阅读(682) 评论(0) 推荐(0) 编辑
摘要:在 Connect(); 2018 大会上,微软发布了 .NET Core 3 Preview,以及基于 .NET Core 3 的 WPF;同时还发布了 Visual Studio 2019 预览版。你可以基于 .NET Core 3 创建 WPF 程序。不过,如果你已经有基于 .NET Fram 阅读全文
posted @ 2018-12-06 10:31 walterlv 阅读(867) 评论(0) 推荐(0) 编辑
摘要:在 Connect(); 2018 大会上,微软发布了 .NET Core 3 Preview,以及基于 .NET Core 3 的 WPF;同时还发布了 Visual Studio 2019 预览版。不过 Visual Studio 2019 的预览版中并没有携带 WPF on .NET Core 阅读全文
posted @ 2018-12-06 10:29 walterlv 阅读(1432) 评论(0) 推荐(0) 编辑
摘要:Windows Community Toolkit 再次更新到 5.0。以前可以在 WPF 中使用有限的 UWP 控件,而现在有了 WindowsXamlHost,则可以使用更多 UWP 原生控件了。 关于 Windows Community Toolkit 早期版本的 Xaml Bridge,可以 阅读全文
posted @ 2018-11-28 15:45 walterlv 阅读(2054) 评论(0) 推荐(0) 编辑
摘要:在 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) 一文中,我们说到了在 WPF 中引入简单的 UWP 控件以及相关的注意事项。不过,通常更有实际价值的是更复杂的 UWP 控件的引入,通常是一整个 Page。 本文将介绍如何在 阅读全文
posted @ 2018-11-28 15:37 walterlv 阅读(1773) 评论(0) 推荐(0) 编辑
摘要:Windows 10 自 1703 开始引入第二代的多屏 DPI 机制(PerMonitor V2),而 WPF 框架可以支持此第二代的多屏 DPI 机制。 本文将介绍 WPF 框架利用第二代多屏 DPI 机制进行高 DPI 适配的方法。同时,也介绍低版本的 WPF 或者低版本的操作系统下如何做兼容 阅读全文
posted @ 2018-10-28 18:35 walterlv 阅读(958) 评论(0) 推荐(0) 编辑
摘要:本文将介绍 Windows 系统中高 DPI 开发的基础知识。由于涉及到坐标转换,这种转换经常发生在计算的不知不觉中;所以无论你使用哪种 Windows 下的 UI 框架进行开发,你都需要了解这些内容,以免不断踩坑。 <!-- ![Windows 高 DPI 应用开发课件](/static/post 阅读全文
posted @ 2018-10-28 16:51 walterlv 阅读(1841) 评论(0) 推荐(1) 编辑
摘要:我们在 WPF 中使用绑定时可以使用 ElementName=Foo 这样的写法,并且还能够真的在运行时找到这个名称对应的对象,是因为 WPF 中提供了名称范围概念。 实现 INameScope 接口可以定义一个名称范围。无论你使用 Name 属性还是使用 x:Name 特性都可以在一个名称范围内指 阅读全文
posted @ 2018-10-28 13:01 walterlv 阅读(328) 评论(0) 推荐(0) 编辑
摘要:在 Binding 中使用 ElementName 司空见惯,没见它出过什么事儿。不过当你预见 ContextMenu,或者类似 Grid.Row / Grid.Column 这样的属性中设置的时候,ElementName 就不那么管用了。 本文将解决这个问题。 本文内容 以下代码是可以正常工作的 阅读全文
posted @ 2018-10-28 11:47 walterlv 阅读(522) 评论(0) 推荐(0) 编辑
摘要:今年五月的 Build 大会上,微软说 .NET Core 3.0 将带来 WPF / Windows Forms 这些桌面应用的支持。当然,是通过 Windows 兼容包(Windows Compatibility Pack)实现的。为了提前检查你的程序是否能在未来跑在 .NET Core 3.0 阅读全文
posted @ 2018-09-26 21:11 walterlv 阅读(256) 评论(0) 推荐(0) 编辑
摘要:对于 WPF 程序,如果你有某一个 UI 控件非常复杂,很有可能会卡住主 UI,给用户软件很卡的感受。但如果此时能有一个加载动画,那么就不会感受到那么卡顿了。UI 的卡住不同于 IO 操作或者密集的 CPU 计算,WPF 中的 UI 卡顿时,我们几乎没有可以让 UI 响应的方式,因为 WPF 一个窗 阅读全文
posted @ 2018-09-26 21:04 walterlv 阅读(736) 评论(0) 推荐(0) 编辑
摘要:在 .NET Framework 4.7 以前,WPF 程序的触摸处理是基于操作系统组件但又自成一套的,这其实也为其各种各样的触摸失效问题埋下了伏笔。再加上它出现得比较早,触摸失效问题也变得更加难以解决。即便是 .NET Framework 4.7 以后也需要开发者手动开启 Pointer 消息,并 阅读全文
posted @ 2018-08-27 22:02 walterlv 阅读(504) 评论(1) 推荐(0) 编辑
摘要:UWP 程序天生单实例。当然,新 API (10.0.17134)开始也提供了多实例功能。不过,传统 Win32 程序可就要自己来控制单实例了。 本文介绍简单的几个 Win32 方法调用,使 Win32 程序也支持单实例。 激活之前进程的窗口 我们可以通过进程名称找到此前已经启动过的进程实例,如果发 阅读全文
posted @ 2018-08-27 21:56 walterlv 阅读(583) 评论(0) 推荐(0) 编辑
摘要:WPF 自定义窗口样式有多种方式,不过基本核心实现都是在修改 Win32 窗口样式。然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上的体验一致性。 本文将分享一个我自制的标题栏按钮样式,使 阅读全文
posted @ 2018-08-27 21:42 walterlv 阅读(698) 评论(2) 推荐(0) 编辑
摘要:WPF 自定义窗口样式有多种方式,不过基本核心实现都是在修改 Win32 窗口样式。然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上的体验一致性。 本文将使用 WindowChrome 来 阅读全文
posted @ 2018-07-19 20:03 walterlv 阅读(618) 评论(0) 推荐(1) 编辑
摘要:不知从什么时候开始,头像流行使用圆形了,于是各个平台开始追逐显示圆形裁剪图像的技术。WPF 作为一个优秀的 UI 框架,当然有其内建的机制支持这种圆形裁剪。 不过,内建的机制仅支持画刷,而如果被裁剪的元素支持交互,或者拥有普通画刷无法达到的显示效果,那么就需要本文介绍的更加通用的解决方法了。 UWP 阅读全文
posted @ 2018-06-26 20:56 walterlv 阅读(682) 评论(0) 推荐(1) 编辑
摘要:只要你用 XAML 写代码,我敢打赌你一定用各种方式使(nuè)用(dài)过 Grid。不知你有没有在此过程中看到过 Grid 那些匪夷所思的布局结果呢? 本文将带你来看看 Grid 布局中的 Bug。 无限空间下的比例 先上一段代码,直接复制到你的试验项目中运行: 第一列固定 100,第二列占 阅读全文
posted @ 2018-05-19 07:51 walterlv 阅读(294) 评论(0) 推荐(1) 编辑
摘要:在 Windows 10.0.16299 中,RevealBrush 被引入,可以实现炫酷的鼠标滑过高亮效果和点击光照。本文将告诉大家如何完整地实现这样的效果。 Reveal 的效果(自带) 在微软官方推荐的 XAML Controls Gallery 应用中,我们可以找到 Reveal 的实现章节 阅读全文
posted @ 2018-04-15 10:42 walterlv 阅读(336) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示