随笔分类 -  WPF

摘要:1. 桌面应用程序的 CI/CD 桌面应用程序的 CI/CD 过程和网站有一些不同,毕竟桌面应用程序的“部署”只是将安装包分发到目标位置,连应用商店都不用上,根据公司的管理流程可以很复杂,也可以很简单。在简单的情况下,Azure Pipelines 中一个桌面应用(WPF)的 CI/CD 过程如下: 阅读全文
posted @ 2021-06-18 09:29 dino.c 阅读(774) 评论(3) 推荐(3) 编辑
摘要:1. 编译服务器 在 Azure Pipelines 中至少需要一个编译服务器的 Agent 才能编译代码或发布软件。Azure DevOps 本身已经提供了一个 Agent,但出于各种理由(需要特殊的编译打包环境、需要更高的性能、需要更多的控制权等)很多时候需要一些自托管代理。这篇文章将讲解如何在 阅读全文
posted @ 2021-04-14 16:50 dino.c 阅读(1406) 评论(3) 推荐(3) 编辑
摘要:1. 获取代码覆盖率 上一篇文章里,我们在 Pipeline 中插入一个单元测试并把所有单元测试都通过作为 Pipeline 通过的硬性要求。除此以外,我们还可以获取单元测试的代码覆盖率,用作衡量代码质量的指标。代码覆盖率没有一个标准,各个项目有各个项目的造化,不一定更高的单元测试覆盖率就代表项目的 阅读全文
posted @ 2021-04-08 09:22 dino.c 阅读(848) 评论(6) 推荐(1) 编辑
摘要:1. 什么是 Azure Pipelines Azure Pipelines 会自动构建和测试代码项目,以将其提供给其他人。它适用于任何语言或项目类型。Azure Pipelines 结合了持续集成 (CI) 和持续交付 (CD),以持续不断地测试和构建您的代码,并将代码运送到任何目标。 在网上关于 阅读全文
posted @ 2021-04-07 11:45 dino.c 阅读(2434) 评论(1) 推荐(3) 编辑
摘要:1. 什么是 Azure Repos Azure Repos 是一组版本控制工具,可用于管理代码。无论您的软件项目是大型项目还是小型项目,都应尽快使用版本控制。 版本控制系统是可帮助您跟踪随时间变化对代码所做的更改的软件。在编辑代码时,您告诉版本控制系统对文件进行快照。版本控制系统会永久保存该快照, 阅读全文
posted @ 2021-04-01 11:20 dino.c 阅读(1863) 评论(4) 推荐(3) 编辑
摘要:1. XAML 的问题 刚入门 WPF/UWP 之类的 XAML 平台,首先会接触到 XAML 这一新事物。初学 XAML 时对它的印象可以归纳为一个词:一坨。 随着我在 XAML 平台上工作的时间越来越长,我对 XAML 的了解就越来越深入,从语法、约束、扩展性等方方面面,我明白到 XAML 是桌 阅读全文
posted @ 2021-01-21 09:06 dino.c 阅读(6973) 评论(24) 推荐(29) 编辑
摘要:1. 问题 [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { ContainerLocator.Container.Resolve<TestViewModel>(); } } public cl 阅读全文
posted @ 2021-01-20 09:02 dino.c 阅读(797) 评论(4) 推荐(3) 编辑
摘要:我要先声明,这篇文章介绍到的内容虽说不是不能用,但玩乐成分居多,大家看看就好,不要太认真。 1. Microsoft Chart Controls 中的 FinancialFormula 在上一篇文章 使用 Math.Net 进行曲线拟合和数据预测 中,我介绍了如何使用 Math.Net ,这篇文章 阅读全文
posted @ 2021-01-13 09:01 dino.c 阅读(1780) 评论(4) 推荐(10) 编辑
摘要:1. 需求 在上一篇文章 《在 ViewModel 中让数据验证出错(Validation.HasError)的控件获得焦点》中介绍了如何让 Validation.HasError 的控件自动获得焦点,之后引申了另一个问题:如果有多个 HasError 的控件,如何只让第一个自动获得焦点。 这需求比 阅读全文
posted @ 2020-12-28 09:08 dino.c 阅读(1434) 评论(5) 推荐(3) 编辑
摘要:1. 需求 在 MVVM 中 ViewModel 和 View 之间的交互通常都是靠 Icommand 和 INotifyPropertyChanged,不过有时候还会需要从 MVVM 中控制 View 中的某个元素,让它获得焦点,例如这样: 上面的 gif 是我在另一篇文章 《自定义一个“传统”的 阅读全文
posted @ 2020-12-23 08:58 dino.c 阅读(1597) 评论(11) 推荐(10) 编辑
摘要:不知不觉,Visual Studio 2019 已经出到 16.8 和 16.9 Preview 了。虽然每次更新都林林总总地一大堆新功能和改进,但关于 XAML 的内容总是,always,每次都只有一点点。其实 Xamarin 相关的内容有在使劲地更新,不过和我做的 WPF/UWP 关系又不大。总 阅读全文
posted @ 2020-12-16 09:38 dino.c 阅读(4580) 评论(17) 推荐(22) 编辑
摘要:1. WinUI 3 在微软 Build 2020 开发者大会上,WinUI 团队宣布可公开预览的 WinUI 3 Preview 1,它让开发人员可以在 Win32 中使用 WinUI。最终 XAML 的新功能不再和 Windows SDK 绑定,所有新的 XAML 功能都将作为 WinUI 的一 阅读全文
posted @ 2020-12-14 09:09 dino.c 阅读(6062) 评论(18) 推荐(15) 编辑
摘要:最近写了一些 MVVM 框架的文章,翻了一些 Microsoft Docs 的文档,顺便就对 MVVM 本身来了兴致,想看看更多当年相关的文档。在 MVVM 出现后十多年,我在不同的场合见到过多种 MVVM 的实现方式,也看到过各种 MVVM 框架的多次改进(这些框架通常包含多个用于实现解耦体系结构 阅读全文
posted @ 2020-12-09 09:29 dino.c 阅读(3099) 评论(20) 推荐(17) 编辑
摘要:1. Prism.Wpf 和 Prism.Unity 这篇是 Prism 8.0 入门的第二篇文章,上一篇介绍了 Prism.Core,这篇文章主要介绍 Prism.Wpf 和 Prism.Unity。 以前做 WPF 和 Silverlight/Xamarin 项目的时候,我有时会把 ViewMo 阅读全文
posted @ 2020-12-08 09:09 dino.c 阅读(9841) 评论(9) 推荐(14) 编辑
摘要:1. Prism 简介 Prism 是一个用于构建松耦合、可维护和可测试的 XAML 应用的框架,它支持所有还活着的基于 XAML 的平台,包括 WPF、Xamarin Forms、WinUI 和 Uwp Uno。Prism 提供了一组设计模式的实现,这些模式有助于编写结构良好且可维护的 XAML 阅读全文
posted @ 2020-12-07 09:15 dino.c 阅读(16082) 评论(14) 推荐(26) 编辑
摘要:之前写过一篇博客 关于 ScrollViewer 和滚动轮劫持(scroll-wheel-hijack),里面介绍了 ScrollViewer 的滚动轮劫持问题,以及如果解决。当时的做法是继承 ScrollViewer 并重写 OnMouseWheel,全部代码如下: public class Ex 阅读全文
posted @ 2020-06-08 14:32 dino.c 阅读(967) 评论(8) 推荐(2) 编辑
摘要:1. 什么是 WinUI 3 在微软 Build 2020 开发者大会上,WinUI 团队宣布可公开预览的 WinUI 3 Preview 1,它让开发人员可以在 Win32 中使用 WinUI。WinUI 3 Preview 1 包含新的 VisualStudio 项目模板,可以创建面向 .NET 阅读全文
posted @ 2020-06-08 09:08 dino.c 阅读(23544) 评论(78) 推荐(32) 编辑
摘要:1. 什么是Expression Web Expression Studio是微软在2007年推出的一套针对设计师的套件,其中包含专业的设计工具和新技术,可以弹性且自由地将设计方案转为实际——无论设计的是标准的网站、拥有丰富用户经验的桌面应用,或是管理数字资产和内容。它包含以下部分: Express 阅读全文
posted @ 2020-04-27 00:42 dino.c 阅读(7714) 评论(37) 推荐(14) 编辑
摘要:1. 升级到Core的好处 去年中我曾考虑将我的控件库项目Kino.Toolkit.Wpf升级到.NET Core,不过很快放弃了,因为当时.NET Core是预览版,编译WPF还需要使用最新的Visual Studio 2019,这样作为一个教学项目不够友好。到了今天.NET Core 3.1都出 阅读全文
posted @ 2020-04-08 09:06 dino.c 阅读(6225) 评论(23) 推荐(16) 编辑
摘要:1. 问题 好像很少人会遇到这种需求。假设有一个文件夹,用户有几乎所有权限,但没有删除的权限,如下图所示: 这时候使用SaveFileDialog在这个文件夹里创建文件居然会报如下错误: 这哪里是网络位置了,我又哪里去找个管理员?更奇怪的是,虽然报错了,但文件还是会创建出来,不过这是个空文件。不仅W 阅读全文
posted @ 2020-04-07 09:09 dino.c 阅读(1109) 评论(6) 推荐(7) 编辑