uwp
文章平均质量分 90
walter lv
这个作者很懒,什么都没留下…
展开
-
使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(概念篇)
OPML 全称是 Outline Processor Markup Language ,即 大纲处理标记语言。目前流行于收集博客的 RSS 源,便于用户转移自己的订阅项目。本文将介绍这个古老的格式,并提供一个 .NET 上的简易解析器。本文分为两个部分,一个是理解 OPML 格式,一个是解析此格式:概念篇(本文)解析篇本文内容OPML 格式典型的 OPML 文件OPML 文件中的节...原创 2020-02-29 14:23:03 · 3283 阅读 · 0 评论 -
使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(解析篇)
OPML 全称是 Outline Processor Markup Language ,即 大纲处理标记语言。目前流行于收集博客的 RSS 源,便于用户转移自己的订阅项目。本文将介绍这个古老的格式,并提供一个 .NET 上的简易解析器。本文是两个部分的第二篇,前者是理解 OPML 格式,此篇是解析此格式:概念篇解析篇(本文)本文内容OPML 格式创建适用于 RSS 的简易 OPML...原创 2020-02-29 14:22:27 · 2648 阅读 · 0 评论 -
UWP 中的各种文件路径(用户、缓存、漫游、安装……)
UWP 提供了多种不同文件路径访问方式,对应到不同的文件路径中。可能我们只是简单用 ApplicationData.Current 获取一下可以读写的路径便能应付我们应用日常所需的各种文件读写需求,不过,UWP 还提供了更多的路径选项。本文将和你一起总结 UWP 中的各种各样的路径。本文内容UWP 中的路径种类ApplicationDataPackage.InstalledLocation特...原创 2020-02-29 14:21:28 · 2914 阅读 · 0 评论 -
UWP 应用中 CoreApplication / Application, CoreWindow / Window 之间的区别
在 StackOverflow 上看到有小伙伴询问 CoreApplication, CoreApplicationView, Application, ApplicationView, CoreWindow, Window 它们的含义以及它们之间的区别。于是我整理了这篇文章。This post is written in multiple languages. Please select ...原创 2020-02-29 13:57:22 · 1190 阅读 · 0 评论 -
UWP 扩展/自定义标题栏的方法,一些概念和一些注意事项
在 Windows 10 的前几个版本中将页面内容扩展到标题栏上还算简单,主要是没什么坑。直到一些新控件的引入和一些外观设计趋势变化之后,扩展标题栏开始出现一些坑了。本文将重温 UWP 自定义标题栏或者扩展标题栏的方法,但更重要的是解决一些坑。本文内容扩展/自定义标题栏一些概念一些坑控件在标题栏区域无法交互更高的标题栏,或者被遮挡在什么时机调用?适配移动设备扩展/自定义标题栏要扩展标题栏...原创 2020-02-29 13:55:03 · 960 阅读 · 0 评论 -
理解 UWP 视图的概念,让 UWP 应用显示多个窗口(多视图)
UWP 应用多是一个窗口完成所有业务的,事实上我也推荐使用这种单一窗口的方式。不过,总有一些特别的情况下我们需要用到不止一个窗口,那么 UWP 中如何使用多窗口呢?本文内容为什么 UWP 需要多窗口?UWP 视图的概念UWP 多窗口管理多个 UWP 视图为什么 UWP 需要多窗口?多窗口在传统 Win32 的开发当中是司空见惯的事儿了,不过我个人非常不喜欢,因为 Windows 系统上的多...原创 2020-02-29 13:53:39 · 1815 阅读 · 0 评论 -
Windows 10 应用创建模糊背景窗口的三种方法
现代的操作系统中创建一张图片的高斯模糊效果非常容易,不过如果要在窗口中获得模糊支持就需要操作系统的原生支持了。iOS/Mac 和 Windows 系统都对此有支持。本文将介绍三种创建模糊背景窗口的方法。有人可能喜欢称之为毛玻璃窗口、亚克力窗口。This post is written in multiple languages. Please select yours:{% include...原创 2020-02-29 13:38:39 · 1986 阅读 · 0 评论 -
PasswordVault —— 在 UWP 应用中安全地保存密码
只要你做过自动登录,一定会遇到密码的安全问题。现在大部分的网络服务都已经支持 Token 了,有些已经支持 OAuth2.0,这意味着客户端不怎么需要关心密码的安全保存问题。但是,依然还有一些古老的服务和协议需要直接传输密码,比如邮件的 IMAP 协议。我在 ERMail 应用的开发中就遇到了这样的问题,作为一款邮件客户端,IMAP 协议下的自动登录依然要在用户的本地保存密码。无论你采用哪...原创 2020-01-28 17:32:37 · 727 阅读 · 0 评论 -
WindowsXamlHost:在 WPF 中使用 UWP 控件库中的控件
在 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) 一文中,我们说到了在 WPF 中引入简单的 UWP 控件以及相关的注意事项。不过,通常更有实际价值的是更复杂的 UWP 控件的引入,通常是一整个 Page。本文将介绍如何在 WPF 项目中引用 UWP 的控件库。本文内容创建一个 UWP 控件库对 WPF 项目的准备工...原创 2018-11-28 15:37:17 · 864 阅读 · 0 评论 -
WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit)
Windows Community Toolkit 再次更新到 5.0。以前可以在 WPF 中使用有限的 UWP 控件,而现在有了 WindowsXamlHost,则可以使用更多 UWP 原生控件了。关于 Windows Community Toolkit 早期版本的 Xaml Bridge,可以参见:WPF 使用 Edge 浏览器 - 林德熙本文内容安装 NuGet 包配置 WPF ...原创 2018-11-28 15:45:10 · 2337 阅读 · 0 评论 -
使用 Win2D 绘制带图片纹理的圆(或椭圆)
使用 Win2D 绘制图片和绘制椭圆都非常容易,可是如何使用 Win2D 绘制图片纹理的椭圆呢?本文内容重力迷宫小球Win2D 实现关于 CanvasCommandList重力迷宫小球▲ 重力迷宫你可以看到这个小球就像一个透明塑料小球一样,纹理会跟随背景而动。这显然不是 Win2D 中的游戏循环:CanvasAnimatedControl 一文中我用 DrawEllipse 画的那个灰...原创 2018-11-28 15:49:27 · 479 阅读 · 0 评论 -
Win2D 中的游戏循环:CanvasAnimatedControl
Win2D 是 DirectX 的一个高层封装,提供了极大 DirectX 性能的同时,又具有很好用的 API 设计。用 Win2D 除了能做出高性能的视觉效果之外,还可以轻而易举地搭建一个游戏循环出来。使用 Win2D 的游戏循环,你可以直接做出一个简单的游戏出来。本文内容使用 Win2D 做出来的游戏准备工作Win2D 中的画布控件CanvasAnimatedControlCanvasA...原创 2018-11-28 15:51:26 · 590 阅读 · 0 评论 -
使用 Windows 10 中的加速度计(Accelerometer,重力传感器)
在做 UWP 应用开发的时候还有什么理由可以用到加速度计呢?场景很多啦,比如做游戏,做类似 Surface Hub 那种一边旋转,一边所有内容跟着一起转的效果。Windows 10 UWP 中的加速度计使用非常简单,只需要简单几句代码即可。本文内容重力迷宫游戏初始化 Accelerometer得到 Accelerometer 的读数将 Accelerometer 的读数转化成倾斜角度参考资料...原创 2018-11-28 15:54:03 · 2201 阅读 · 0 评论 -
UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等)
UWP 中使用 WebView 时可以在网页中额外执行一些代码。于是你几乎可以在网页上做任何事情,那些你可以在浏览器控制台中做的事情。本文将介绍做法。本文内容准备环境执行 JavaScript 代码模拟用户输入JavaScript eval(string) 函数模拟用户登录参考资料准备环境在页面(XAML)中放一个 WebView,然后取个名字,比如就叫做 WebView。监听 Nav...原创 2019-01-27 13:34:57 · 1591 阅读 · 0 评论 -
透明度叠加算法:如何计算半透明像素叠加到另一个像素上的实际可见像素值(附 WPF 和 HLSL 的实现)
本文介绍透明度叠加算法(Alpha Blending Algorithm),并用 C#/WPF 的代码,以及像素着色器的代码 HLSL 来实现它。本文内容算法在 C# 代码中实现在像素着色器中实现算法对于算法,我只是搬运工,可以随意搜索到。算法详情请查看:Alpha compositing - Wikipedia。对于完全不透明的背景和带有透明度的前景,合并算法为:float r = ...原创 2019-04-06 10:07:28 · 5854 阅读 · 0 评论 -
C# 跨设备前后端开发探索
每个人都拥有 好奇心,好奇心驱使着我们总是去尝试做一些有趣的事情。带起你的好奇心,本文将使用 C# 开发各种各样好玩的东西。[本文内容已加入 2019 年 4 月 13 日的广州 .NET 俱乐部第 2 届线下沙龙。本文内容0x00 序章好奇心先搞起来0x01 C# 跨设备前后端开发Web 后端Windows 桌面端公共代码控制台iOS 端Web 前端0x02 C# 还能做什么?0x0...原创 2019-05-19 17:09:05 · 1240 阅读 · 0 评论 -
如何为 Win32 的打开和保存对话框编写文件过滤器(Filter)
在使用 Win32 / WPF / Windows Forms 的打开或保存文件对话框的时候,多数情况下我们都会考虑编写文件过滤器。UWP 中有 FileTypeFilter 集合可以添加不同的文件种类,但 Win32 中却是一个按一定规则组合而成的字符串。因为其包含一定的格式,所以可能写错。本文介绍如何编写 Filter。本文内容编写 Filter附:如何显示对话框编写 FilterF...原创 2019-07-27 20:38:13 · 953 阅读 · 0 评论 -
Windows 下的高 DPI 应用开发(UWP / WPF / Windows Forms / Win32)
本文将介绍 Windows 系统中高 DPI 开发的基础知识。由于涉及到坐标转换,这种转换经常发生在计算的不知不觉中;所以无论你使用哪种 Windows 下的 UI 框架进行开发,你都需要了解这些内容,以免不断踩坑。本文内容各种不同的 Windows 桌面 UI 框架对普通用户而言的 DPI 级别对 Windows 应用而言的 DPI 感知级别(Dpi Awareness)不同 UI 框架...原创 2018-10-28 16:51:20 · 1005 阅读 · 2 评论 -
将 UWP 中 CommandBar 的展开方向改为向下展开
在 UWP 中使用 CommandBar 来迅速添加一组功能按钮是非常迅速的,是 UWP 中推荐的交互方案之一。也许你能见到 CommandBar 按你所需向下展开,不过可能更多数情况会看到 CommandBar 的展开方向是向上的。本文将解释 CommandBar 的展开方向逻辑,并且提供多种方法来解决它展开方向的问题。本文内容为什么我们需要更改 CommandBar 的展开方向?将 Co...原创 2018-10-28 11:14:29 · 701 阅读 · 0 评论 -
UWP 轻量级样式定义(Lightweight Styling)
在 UWP 中,可以通过给空间直接设置属性或在 Style 中设置属性来定制空间的样式;不过这样的样式定义十分有限,比如按钮按下时的样式就没法儿设置。当然可以通过修改 Template 来设置控件的样式,然而 UWP 中控件的样式代码实在是太多太复杂了,还不容易从 Blend 中复制了大量代码出来改,下个版本样式又不一样,于是我们就丢了不少功能。本文将介绍 UWP 轻量级样式定义(Lightwe...原创 2018-09-26 21:15:05 · 435 阅读 · 0 评论 -
UWP 中的 LaunchUriAsync,使用默认浏览器或其他应用打开链接
古老的 Win32 应用启动其他程序太过方便,以至于一部分开发者都已经不记得 Windows 能通过关联协议的方式通过统一资源定位符(URI)来启动应用程序了。转到 UWP 后,使用 URI 启动应用似乎成为了最推荐的方式。于是一句 LaunchUriAsync 就能解决大多数问题。原创 2017-09-25 00:44:59 · 3748 阅读 · 0 评论 -
WPF/UWP 绑定中的 UpdateSourceTrigger
为 `TextBox` 的 `Text` 属性制定了双向绑定,然而运行却发现绑定源的对应属性却不及时变化。阅读本文将了解其原因和解决办法。原创 2017-09-25 01:23:42 · 2052 阅读 · 0 评论 -
DependencyProperty.UnsetValue 的正确打开方式
无论是 WPF,还是 UWP,只要你用了绑定或者标记扩展,一定会碰到一个神奇的值——DependencyProperty.UnsetValue。UnsetValue 是什么意思?为什么会出现这个值呢?如果要让 UnsetValue 为我们所用,正确的用法又是什么呢?DependencyProperty.UnsetValue 是什么?要知道这是什么,一定要看源码:/// <summary> Stand原创 2017-10-11 00:05:34 · 3650 阅读 · 0 评论 -
使用 Task.Wait()?立刻死锁(deadlock)
最近读到一篇异步转同步的文章,发现其中没有考虑到异步转同步过程中发生的死锁问题,所以特地在本文说说异步转同步过程中的死锁问题。文章作者 林德熙 已经修复了描述: - win10 uwp 异步转同步什么情况下会产生死锁?调用 Task.Wait() 或者 Task.Result 立刻产生死锁的充分条件: 1. 调用 Wait() 或 Result 的代码位于 UI 线程;...原创 2017-10-27 23:59:35 · 11119 阅读 · 7 评论 -
WPF 和 UWP 中,不用设置 From 或 To,Storyboard 即拥有更灵活的动画控制
无论是 WPF 还是 UWP 开发,如果用 Storyboard 和 Animation 做动画,我们多数时候都会设置 From 和 To 属性,用于从起始值动画到目标值。然而动画并不总是可以静态地指定这些值,因为更多的时候动画的起始值和目标值取决于当前 UI 的状态。本文中,我将将尽量避免设置 From 和 To 值,让动画可以随时中断并重新开始,而中途不会出现突兀的变化。原创 2017-10-31 16:19:13 · 1609 阅读 · 0 评论 -
当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?
这篇文章不会说 MVVM 是什么,因为讲这个的文章太多了;也不会说 MVVM 的好处,因为这样的文章也是一搜一大把。我只是想说说我们究竟应该如何理解 M-V-VM,当我们真正开始写代码时,应该在里面的每一层里写些什么。原创 2017-11-30 01:32:39 · 3290 阅读 · 0 评论 -
分享一个算法,计算能在任何背景色上清晰显示的前景色
背景色千差万别,如果希望在这样复杂的背景色下显示清晰可辨的前景色(例如显示文字),那如何选择这样的前景色才能确保适用于所有的背景呢?原创 2017-11-30 01:43:21 · 2780 阅读 · 0 评论 -
Visual->UIElement->FrameworkElement,带来更多功能的同时也带来了更多的限制
我们总会自然而然地认为这些控件都是有大小的,它们会在合适的位置显示自己,通常不会超出去。但是,`FrameworkElement` 甚至是 `Control` 用得久了,都开始忘记 `Visual`、`UIElement` 带给我们的那些自由。原创 2017-11-23 22:16:21 · 2235 阅读 · 0 评论 -
将 UWP 的有效像素(Effective Pixels)引入 WPF
UWP 采用有效像素(Effective Pixels)来描述尺寸,这是才是能够自圆其说的一套尺寸描述;WPF 的尺寸机制与 UWP 完全就是同一套,使用有效像素才能解释 WPF 尺寸变化上的各种特性!原创 2017-11-23 22:22:10 · 728 阅读 · 0 评论 -
用动画的方式画出任意的路径(直线、曲线、折现)
WPF/UWP 中提供的 Path 类可以为我们绘制几乎所有可能的矢量图形。但是,如果这些矢量图形可以以动画的形式播放出来,那将可以得到非常炫酷的演示效果。原创 2017-11-23 22:37:19 · 1516 阅读 · 2 评论 -
UWP 流畅设计中的光照效果(容易的 RevealBorderBrush 和不那么容易的 RevealBackgroundBrush)
在 Windows 10.0.16299 中,RevealBrush 被引入,可以实现炫酷的鼠标滑过高亮效果和点击光照。本文将告诉大家如何完整地实现这样的效果。Reveal 的效果(自带)在微软官方推荐的 XAML Controls Gallery 应用中,我们可以找到 Reveal 的实现章节。下图是应用中演示的 Reveal 效果:不过在其实现中,全都是使用的系统自带的...原创 2018-04-15 10:42:09 · 672 阅读 · 0 评论 -
流畅设计 Fluent Design System 中的光照效果 RevealBrush,WPF 也能模拟实现啦!
UWP 才能使用的流畅设计效果好惊艳,写新的 UWP 程序可以做出更漂亮的 UI 啦!然而古老的 WPF 项目也想解解馋怎么办?于是我动手实现了一个!迫不及待看效果 ▲ 是不是很像 UWP 中的 RevealBorderBrush?不止是效果像,连 XAML 写法也像:<Border BorderThickness="1" Margin="50,34,526...原创 2018-04-05 17:08:01 · 2833 阅读 · 2 评论 -
WPF/UWP 的 Grid 布局竟然有 Bug,还不止一个!了解 Grid 中那些未定义的布局规则
只要你用 XAML 写代码,我敢打赌你一定用各种方式使(nuè)用(dài)过 Grid。不知你有没有在此过程中看到过 Grid 那些匪夷所思的布局结果呢?本文将带你来看看 Grid 布局中的 Bug。无限空间下的比例先上一段代码,直接复制到你的试验项目中运行:<Canvas> <Grid Height="100"> <...原创 2018-05-19 07:50:58 · 1318 阅读 · 3 评论 -
(1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件、配置、应用启动流程代码和界面代码。然而这些文件在 UWP 程序中到底是如何工作起来的?我从零开始创建了一个 UWP 程序,用于探索这些文件的用途,了解 UWP 程序的启动流程。本文分为两个部分:从零开始创建一个 UWP 项目并完成部署从零开始编写一个 UWP 应用程序和窗口...原创 2018-07-27 07:17:16 · 3057 阅读 · 0 评论 -
(2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件、配置、应用启动流程代码和界面代码。然而这些文件在 UWP 程序中到底是如何工作起来的?我从零开始创建了一个 UWP 程序,用于探索这些文件的用途,了解 UWP 程序的启动流程。本文分为两个部分:从零开始创建一个 UWP 项目并完成部署从零开始编写一个 UWP 应用程序和窗口...原创 2018-07-27 07:19:11 · 3321 阅读 · 0 评论 -
WPF 应用完全模拟 UWP 的标题栏按钮
WPF 自定义窗口样式有多种方式,不过基本核心实现都是在修改 Win32 窗口样式。然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上的体验一致性。本文将分享一个我自制的标题栏按钮样式,使其与 UWP 原生应用一模一样(同时支持自定义)。在 WPF 使用 WindowChrom...原创 2018-08-27 21:41:40 · 1974 阅读 · 0 评论 -
优化 UWP 中图片的内存占用
跟图片打交道的 UWP 应用或多或少都会遇到图片带来的性能问题,就算不主要处理图片,做个论坛做个新闻客户端都涉及到大量图片。一个帖子、一篇文章里多半都是些高清大图,这些图片一张即可占用程序 1~2M 的内存空间。普通的写法内存很快就爆了,那么 UWP 中我们可以用哪些方法优化呢?原创 2017-09-23 00:03:53 · 1685 阅读 · 0 评论