Loading

摘要: .NET中有多少种定时器一文介绍过.NET中至少有6种定时器,但精度都不是特别高,一般在15ms~55ms之间。在一些特殊场景,可能需要高精度的定时器,这就需要我们自己实现了。本文将讨论高精度定时器实现的思路。 高精度定时器 一个定时器至少需要考虑三部分功能:计时、等待、触发模式。计时是进行时间检查 阅读全文
posted @ 2023-12-20 08:52 czwy 阅读(3626) 评论(20) 推荐(26) 编辑
摘要: 前段时间看到群友讨论压缩包能不能运行,想起了n年前用自解压文件SFX实现的一个“需求”:在没有安装任何应用软件的Windows(当时还要支持XP)上能双击打开自定义格式的文件。当时第一反应是这“需求”太奇葩了,简直是不可能。但思考后认为这个“需求”存在一定的合理性,因为当时的目标用户群体并不能熟练使 阅读全文
posted @ 2023-12-06 20:38 czwy 阅读(563) 评论(0) 推荐(3) 编辑
摘要: .NET中至少有6种定时器,每一种定时器都有它的用途和特点。根据定时器的应用场景,可以分为UI相关的定时器和UI无关的定时器。本文将简单介绍这6种定时器的基本用法和特点。 UI定时器 .NET中的UI定时器主要是WinForm、WPF以及WebForm中的定时器。分别为: System.Window 阅读全文
posted @ 2023-11-28 18:47 czwy 阅读(3198) 评论(8) 推荐(21) 编辑
摘要: 消息对话框是UI界面中不可或缺的组成部分,用于给用户一些提示,警告或者询问的窗口。在WPF中,消息对话框是系统原生(user32.dll)的MessageBox,无法通过Style或者Template来修改消息对话框的外观。因此,当需要一个与应用程序主题风格一致的消息对话框时,只能自己动手造轮子了。 阅读全文
posted @ 2023-11-22 21:03 czwy 阅读(1557) 评论(0) 推荐(6) 编辑
摘要: XAML是基于XML的语言,其遵循并扩展了XML的语法规则。其中一项扩展就是标记扩展(Markup Extension),比如我们经常使用的绑定Binding和x:Type。 什么是标记扩展 标记扩展允许在XAML标记中使用特殊的语法来动态地为特性(Attribute)赋值或执行其他操作。简单来说, 阅读全文
posted @ 2023-11-16 17:46 czwy 阅读(1596) 评论(0) 推荐(4) 编辑
摘要: WPF中我们引用资源时常常提到一个概念:pack URI,这是WPF标识和引用资源最常见的方式,但不是唯一的方式。本文将介绍WPF中引用资源的几种方式,并回顾一下pack URI标识引用在不同位置的资源文件的写法。 WPF中引用资源的几种方式 WPF中使用URI标识和加载位于各种位置的文件,包括当前 阅读全文
posted @ 2023-11-07 19:42 czwy 阅读(1806) 评论(0) 推荐(4) 编辑
摘要: 在UI交互中,拖拽操作是一种非常简单友好的交互。尤其是在ListBox,TabControl,ListView这类列表控件中更为常见。通常要实现拖拽排序功能的做法是自定义控件。本文将分享一种在原生控件上设置附加属性的方式实现拖拽排序功能。 该方法的使用非常简单,仅需增加一个附加属性就行。 <TabC 阅读全文
posted @ 2023-10-24 13:48 czwy 阅读(2347) 评论(11) 推荐(19) 编辑
摘要: Freezable是WPF中一个特殊的基类,用于创建可以冻结(Freeze)的可变对象。冻结一个对象意味着将其状态设置为只读,从而提高性能并允许在多线程环境中共享对象。 Freezable的应用 我们定义画刷资源的时候常常会这样写: <SolidColorBrush x:Key="RedBrush" 阅读全文
posted @ 2023-10-18 18:42 czwy 阅读(1628) 评论(0) 推荐(10) 编辑
摘要: WPF的属性系统支持的属性称为依赖项属性,一直不是特别理解依赖属性这个命名。随着对依赖属性理解的深入,比较能接受的说法是依赖属性可以自己没有值,通过使用Binding从数据源获得值,也就是依赖在别的属性上。直到看到Mike Hillberg的这篇博文才彻底消除心中的疑虑。 阅读全文
posted @ 2023-10-12 22:21 czwy 阅读(407) 评论(0) 推荐(1) 编辑
摘要: 《复盘:对过去的事情做思维演练》读书笔记 复盘是对过去所作的事情进行回顾、反思和探究,找出原因,找到规律,从而指导我们解决问题,帮助我们提升。对于复盘来说,回顾、反思、探究、提升,一个都不能少。 复盘的由来 复盘,原本是围棋中的一个术语。当下完一盘棋之后,要重新再棋盘上走一遍,看看哪些子下的好,哪些子下得不好,哪些地方可以有不同甚至更好的下 阅读全文
posted @ 2023-10-10 13:44 czwy 阅读(848) 评论(4) 推荐(3) 编辑
摘要: 在WinForm/WPF中使用CefSharp混合开发时,通常需要自定义滚动条样式,以保证应用的整体风格统一。本文将给出一个简单的示例介绍如何自定义CefSharp中滚动条的样式。 基本思路 在前端开发中,通过CSS来控制滚动条的样式是件寻常的事情。CefSharp也提供了功能强大的API方便开发人 阅读全文
posted @ 2023-10-07 20:03 czwy 阅读(686) 评论(0) 推荐(1) 编辑
摘要: 在WPF中,引入了依赖属性这个概念,提到依赖属性时通常都会说依赖属性能节省实例对内存的开销。此外依赖属性还有两大优势。 支持多属性值,依赖属性系统可以储存多个值,配合Expression、Style、Animation等可以给我们带来很强的开发体验。 加入了属性变化通知,限制、验证等功能。方便我们使 阅读全文
posted @ 2023-09-27 22:02 czwy 阅读(1744) 评论(0) 推荐(2) 编辑
摘要: 百叶窗动画是制作PPT时常用的动画之一,本文将通过实现百叶窗动画效果的例子介绍在WPF中如何使用ShaderEffect。ShaderEffect使用高级着色器语言(High Level Shading Language,HLSL)事先制作好并且已经编译过的效果。先看下百叶窗动画实现效果: ![im 阅读全文
posted @ 2023-09-06 19:18 czwy 阅读(2900) 评论(4) 推荐(12) 编辑
摘要: 在应用开发过程中,经常遇到这样的需求:通过关键字查找数据,把带有关键字的数据显示出来,同时在结果中高亮显示关键字。在web开发中,只需在关键字上加一层标签,然后设置标签样式就可以轻松实现。 在WPF中显示文本内容通常采用`TextBlock`控件,也可以采用类似的方式,通过内联流内容元素`Run`达 阅读全文
posted @ 2023-08-28 09:05 czwy 阅读(1271) 评论(1) 推荐(7) 编辑
摘要: ### 背景 业务开发过程中遇到一个日期范围选择的需求,和Element UI的DateTimePicker组件比较类似,由两个日历控件组成,联动选择起始时间和结束时间。 ### 问题 WPF中提供了一个`DatePicker`的控件,主要由`DatePickerTextBox`、`Button`和 阅读全文
posted @ 2023-08-21 19:01 czwy 阅读(6958) 评论(15) 推荐(25) 编辑