62 热度

[WPF自定义控件库]好用的VisualTreeExtensions

微软在Silverlight Toolkit里提供了一个好用的VisualTreeExtensions,里面提供了一些查找VisualTree的扩展方法。在那个时候(2009年),VisualTreeExtensions对我来说正好是个很棒的Linq和扩展方法的示例代码,比那时候我自己写的FindChildByName之类的方法好用一万倍,所以我印象深刻。而且因为很实用,所以我一直在用这个类(即使是在WPF中),而这次我也把它添加到Kino.Wpf.Toolkit中,可以在 这里 查看源码。...

收录时间: 2019-07-11
分类: WPF
贡献者: Rector
78 热度

如何监视 WPF 中的所有窗口,在所有窗口中订阅事件或者附加 UI

由于 WPF 路由事件(主要是隧道和冒泡)的存在,我们很容易能够通过只监听窗口中的某些事件使得整个窗口中所有控件发生的事件都被监听到。然而,如果我们希望监听的是整个应用程序中所有的事件呢?路由事件的路由可并不会跨越窗口边界呀?本文将介绍我编写的应用程序窗口监视器,来监听整个应用程序中所有窗口中的路由事件。这样的方法可以用来无时无刻监视 WPF 程序的各种状态。

收录时间: 2019-06-28
分类: WPF
贡献者: Rector
76 热度

如何追中 WPF 程序中当前获得键盘焦点的元素并显示出来

我们有很多的调试工具可以帮助我们查看 WPF 窗口中当前获得键盘焦点的元素。本文介绍监控当前键盘焦点元素的方法,并且提供一个不需要任何调试工具的自己绘制键盘焦点元素的方法。

收录时间: 2019-06-28
分类: WPF
贡献者: Rector
82 热度

WPF 通过 ReadyToRun 提升性能

通过 ReadyToRun 可以在程序集同时包含 IL 和本机代码,可以有效提升软件的启动速度。在 .NET Core 3.0 Preview 6 发布了 ReadyToRun 的功能,通过这个功能可以提升软件的启动性能,在程序设置在发布的时候使用 ReadyToRun 的特性,将会编译出来 ReadyToRun(R2R)格式的程序集...

收录时间: 2019-06-28
分类: WPF
贡献者: Rector
57 热度

15 WPF Performance Tips for 2019

Are you a WPF developer? Do your WPF apps have areas of poor performance or don’t run as quickly as you would like? If so, I have 15 tips to help you identify and improve the performance of your WPF applications. While WPF is over a decade old and has been improved greatly over the years, there are ...

收录时间: 2019-06-27
分类: WPF
贡献者: Rector
86 热度

制作通过 NuGet 分发的源代码包时,如果目标项目是 WPF 则会出现一些问题(探索篇,含解决方案)

源代码包源代码包不是 NuGet 官方的概念,而是林德熙和我在 GitHub 上做的一个项目,目的是将你的项目以源代码的形式发布成 NuGet 包。在安装此 NuGet 包后,目标项目将获得这些源代码。你可以通过以下博客了解如何制作一个源代码包。将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样 - 吕毅Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包 - 林德熙SourceYard 制作源代码包 - 林德熙这可以避免因为安装 NuGet 包后带来的大量程序集引用,因为程序集数量太多对程序的启动性能有很大的影响:C# 程序...

收录时间: 2019-06-12
分类: WPF
贡献者: Rector
AD 友情赞助
127 热度

[WPF自定义控件]使用WindowChrome自定义Window Style

1. 为什么要自定义Window对稍微有点规模的桌面软件来说自定义的Window几乎是标配了,一来设计师总是克制不住自己想想软件更个性化,为了UI的和谐修改Window也是必要的;二来多一行的空间可以添加很多功能,尤其是上边缘,因为被屏幕限制住鼠标的移动所以上边缘的按钮很容易选中。做桌面开发总有一天会遇到自定义Window的需求,所以我在控件库中也提供了一个简单的自定义Window。2. 我想要的功能我在上一篇文章介绍了标准Window的功能,我想实现一个包含这些基本功能的,窄边框、扁平化的Window,基本上模仿...

收录时间: 2019-06-11
分类: WPF
贡献者: Rector
74 热度

WPF 隐藏系统窗口菜单

本文告诉大家如何隐藏系统窗口菜单,系统的窗口菜单请看下图...

收录时间: 2019-06-10
分类: WPF
贡献者: Rector
77 热度

WPF 添加窗口消息钩子方法

窗口消息钩子需要先拿到窗口指针然后需要在窗口初始化完成之后才可以做到,推荐的做法请看代码...

收录时间: 2019-06-10
分类: WPF
贡献者: Rector
141 热度

为 WPF 程序添加 Windows 跳转列表的支持

Windows 跳转列表是自 Windows 7 时代就带来的功能,这一功能是跟随 Windows 7 的任务栏而发布的。当时应用程序要想用上这样的功能需要调用 shell 提供的一些 API。然而在 WPF 程序中使用 Windows 跳转列表功能非常简单,在 XAML 里面就能完成。本文将介绍如何让你的 WPF 应用支持 Windows 跳转列表功能。

收录时间: 2019-03-12
分类: WPF
贡献者: Rector
250 热度

WPF 最小的代码使用 DynamicRenderer 书写

在 WPF 中有 DynamicRenderer 提供高性能的书写,这个类在 WPF 只有 InkCanvas 使用,如果想要在自己的 UIElement 使用,需要写一些代码 先创建一个 UIElement 自定义一个,因为 DynamicRenderer 继承于 StylusPlugIn 需要使用 UIElement 的 StylusPlugIns 属性才能添加他 下面创建一个 MeexikelelHaiwurbe 的 UIElement 现在里面什么都没写

收录时间: 2019-01-09
分类: WPF
贡献者: Rector
299 热度

只需 5 秒钟,你就能取到 WPF 程序的超高分辨率超高清截图

我想要截取一个 WPF 程序的图标,但是它太小了。如果我就这样截屏截下来,是很不高清的。由于我需要制作一份课件,所以我需要超高清版本,可是,如何做才能最快速拿到 WPF 程序的超高清截图呢? 本文分享一个方法,只需 5 秒钟,你就能拿到!

收录时间: 2018-12-26
分类: WPF
贡献者: Rector
214 热度

WPF 一个空的 WPF 程序有多少个窗口

在 WPF 内部的5个窗口之 MediaContextNotificationWindow听说有五个窗口可以通过 user32 的 EnumThreadWindows 找到一个线程的窗口delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam);[DllImport("user32.dll")]static extern boo...

收录时间: 2018-12-22
分类: WPF
贡献者: lindexi
204 热度

WPF 源代码 从零开始写一个 UI 框架

需要知道 WPF 是一个 UI 框架,作为一个 UI 框架,最主要的就是交互。也就是 UI 框架需要有渲染显示和处理用户输入的功能。如果直接告诉大家 WPF 里面有哪些类,估计没有几位小伙伴会听下去,要么就是讲的类太简单,看过去我也就知道了,要么就是这个类可能我一直都不会用到他,即使可能会用到也早就忘了。本文不会直接告诉大家 WPF 的源代码是如何写的,而是从零开始一起来写一个 UI 框架,在写的...

收录时间: 2018-12-22
分类: WPF
贡献者: lindexi
356 热度

WPF 高速书写 StylusPlugIn 原理

本文告诉大家 WPF 的 StylusPlugIn 为什么能做高性能书写,在我的上一篇博客和大家介绍了 WPF 的触摸原理,但是没有详细告诉大家如何通过触摸原理知道如何去做一个高速获得触摸的应用,所以本文就在上一篇博客的基础继续告诉大家底层的原理 如果觉得原理很无聊,就直接关闭本文,因为本文都是理论,不会告诉大家如何做高性能书写 在 WPF 如果想要做高性能的书写,就需要足够快获得用户的触摸输入,而如果直接拿到的是路由的输入就会存在下面的问题

收录时间: 2018-10-09
分类: WPF
贡献者: lindexi
AD 友情赞助
658 热度

WPF 使用 Edge 浏览器

本文告诉大家如何使用 Windows Community Toolkit 的新控件,在 WPF 使用 Edge 浏览器 首先需要通过 VisualStudio 创建 WPF 项目。因为 Microsoft.Toolkit.Win32.UI.Controls 库只支持 4.6.2 以上,所以需要选择框架大于 4.6.2 打开 Nuget 安装 Microsoft.Toolkit.Win32.UI.Controls ,需要同意许可

收录时间: 2018-09-05
分类: WPF
贡献者: lindexi
361 热度

C# 从零开始写 SharpDx 应用 初始化dx修改颜色

本文来告诉大家如何在上一篇博客创建的窗口里面使用 Sharpdx 初始化,然后设置窗口颜色 本文是 SharpDX 系列博客,更多博客请点击SharpDX 系列 在C# 控制台创建 Sharpdx 窗口已经创建了一个窗口,现在需要在这个窗口初始化。因为是从零开始写,所以需要非常多细节,我觉得一篇文章是很难全部告诉大家,所以分为了系列的文章。从零开始写有利于大家了解一个渲染框架是如何做出来,并且从底层优化渲染,当然这个方法就是学习的时间会比较长。我会在文章去掉很多细节放在后面的博客讲,让大家先知道总体是如何做的。 创建资源 第一步是需要添加一个方法 InitializeDeviceResources 用来初始化资源,这里初始化的就是设备的资源。在 dx 的渲染是需要紧密绑定设备。 这个方法就是写在KikuSimairme类里,关于这个类的代码在C# 控制台创建 Sharpdx 窗口

收录时间: 2018-09-05
分类: WPF
贡献者: lindexi
501 热度

WPF 使用 SharpDX

本文告诉大家如何在 WPF 使用 SharpDX ,只是入门 本文是一个系列 WPF 使用 Direct2D1 画图入门 WPF 使用 Direct2D1 画图 绘制基本图形 WPF 使用 SharpDX WPF 使用 SharpDX 在 D3DImage 显示 WPF 使用封装的 SharpDx 控件 WPF 使用 SharpDx 异步渲染 先介绍一下 SharpDx ,一个底层封装的 DirectX 库,支持 AnyCpu ,支持 Direct3D9, Direct3D11, Direct3D12,Direct2D1。支持 win32 程序和商店程序。

收录时间: 2018-09-05
分类: WPF
贡献者: lindexi
378 热度

WPF 触摸到事件

通过这个方法就可以创建线程运行 ThreadProc 这个函数是一个无限循环,请看代码while (!this.__disposed){// 忽略代码}这个函数的底层实际上是包括了另一个循环来从 penimc2_v0400.dll 拿到触摸信息如果插入的设备有一个,就会运行 penimc2_v0400.dll 里 GetPenEvent 拿到触摸的信息。如果有多个就会调用 GetPenEv...

收录时间: 2018-08-16
分类: WPF
贡献者: Rector
387 热度

WPF 在image控件用鼠标拖拽出矩形

今天有小伙伴问我一个问题,在image控件用鼠标拖拽出矩形,本文告诉大家如何使用鼠标画出矩形 做出来的效果先请大家看一下 最简单的方法是在 Down 的时候记录按下的点,在 移动的时候重新计算所在的宽度

收录时间: 2018-08-14
分类: WPF
贡献者: lindexi
AD 友情赞助