摘要: 在之前写的一篇文章(XAML: 自定义控件中事件处理的最佳实践)中,我们曾提到了在 .NET 中如果事件没有反注册,将会引起内存泄露。这主要是因为当事件源会对事件监听者产生一个强引用,导致事件监听者无法被垃圾回收。 在这篇文章中,我们首先将进一步说明内存泄露的问题;然后,我们会重点介绍 .NET 中 阅读全文
posted @ 2018-02-24 13:46 WPInfo 阅读(2559) 评论(2) 推荐(10) 编辑
摘要: 在应用中使用 SQLite 数据库来存储数据是相当常见的。在 UWP 平台中要使用 SQLite,一般会使用 SQLite for Universal Windows Platform 和 SQLite PCL 之类的库,前者是 SQLite 引擎库,而后者则提供了用于操作数据库的 API ,不过自 阅读全文
posted @ 2018-02-11 17:57 WPInfo 阅读(2067) 评论(2) 推荐(5) 编辑
摘要: 在 UWP 开发中,我们在进行数据绑定时,除了可以使用传统的绑定 Binding,也可以使用全新的 x:Bind,由于后者是在程序编译时进行初始化操作(不同于 Binding,它是在运行时创建、初始化),所以我们可以称 x:Bind 为编译型绑定,正像本文标题一样。之所以引入 x:Bind,是因为它 阅读全文
posted @ 2017-04-06 18:54 WPInfo 阅读(2956) 评论(2) 推荐(7) 编辑
摘要: 单元测试能够帮助开发人员确保所开发的模块、类以及类中的方法等的正确性,在项目开发过程中,及时进行单元测试能够避免不必要的BUG以及提高测试效率。 在本文中,我们会分别来学习如何使用MSTest、xUnit以及NUnit这些流行的.NET测试框架来对.NET Core项目进行测试。 一、项目创建 首先 阅读全文
posted @ 2018-09-15 14:00 WPInfo 阅读(9178) 评论(1) 推荐(5) 编辑
摘要: 要开发.NET Core应用程序,除了使用强大的Visual Studio之外,还可以使用.NET Core CLI。.NET Core CLI (Command-Line Interface),也就是.NET Core命令行界面,它是一个开发.NET Core应用程序的跨平台工具链。安装.NET 阅读全文
posted @ 2018-08-22 17:43 WPInfo 阅读(1657) 评论(1) 推荐(2) 编辑
摘要: 扩展方法(Extension Methods)是C#3.0时引入的新特性,相信很多人都听过并且也都用过,最常见的是在LINQ中的使用。 不仅如此,在开发中,我们也可以创建自己扩展方法,使用它来优化类的设计、简化代码。本文将简单地介绍扩展方法的概念、定义、使用场景以及要注意的点。 不仅如此,在开发中, 阅读全文
posted @ 2018-08-20 17:33 WPInfo 阅读(2627) 评论(2) 推荐(1) 编辑
摘要: 在之前写的这篇文章 WPF: 只读依赖属性的介绍与实践 中,我们介绍了在 WPF 自定义控件中如何添加只读依赖属性,并且使其结合属性触发器 (Trigger) 来实现对控件样式的改变。事实上,关于触发器,在 WPF 中除了属性触发器,还有事件触发器 (EventTrigger) 和数据触发器 (Da 阅读全文
posted @ 2018-02-20 10:51 WPInfo 阅读(6068) 评论(6) 推荐(13) 编辑
摘要: 在设计与开发 WPF 自定义控件时,我们常常为会控件添加一些依赖属性以便于绑定或动画等。事实上,除了能够添加正常的依赖属性外,我们还可以为控件添加只读依赖属性(以下统称“只读属性”),以增加控件的灵活性。 这听起来有些矛盾。只读依赖属性,只能读不能写,却又怎么能提高控件的灵活性呢?想想我们常用的 I 阅读全文
posted @ 2018-02-09 17:31 WPInfo 阅读(2586) 评论(0) 推荐(8) 编辑
摘要: 在开发 XAML(WPF/UWP) 应用程序中,有时候,我们需要创建自定义控件 (Custom Control) 来满足实际需求。而在自定义控件中,我们一般会用到一些原生的控件(如 Button、TextBox 等)来辅助以完成自定义控件的功能。 自定义控件并不像用户控件 (User Control 阅读全文
posted @ 2018-02-06 17:19 WPInfo 阅读(2961) 评论(14) 推荐(10) 编辑
摘要: 从 Visual Studio 2015 起,共享项目 (Shared Project) 作为新的一种项目类型被添加到项目模板列表中,它的主要目的是使多个不同类型的项目之间可以共享代码或资源。相比它的前任 PCL(Portable Class Library),它要灵活得多。因为 Shared Pr 阅读全文
posted @ 2018-01-31 17:51 WPInfo 阅读(11536) 评论(13) 推荐(21) 编辑
摘要: 在上一篇文章中,我们实现了使用命令行来启动 UWP 应用,在这一篇文章中,我们会实现 UWP 应用自启用的实现,也即开机后或用户登陆后,应用自己启动。这些特性原来都是 Win32 程序所具备的,UWP 能够支持这些特性使得它和 Win32 程序的行为进一步相同。 实现 与实现命令行启动一样,实现自启 阅读全文
posted @ 2018-01-30 19:03 WPInfo 阅读(4446) 评论(4) 推荐(5) 编辑
摘要: 最近在开发应用的过程中,我遇到了如标题所述的需求,其实主要是为了能够快捷启动应用,正像我们可以在“运行”对话框中可以输入一些可执行程序的名称后,就能够直接启动它;这样做,可以增加 App 的易用性。在查了一些文档后,得知在 Windows Build 16266 之后,就加入相关的 API,因此要实 阅读全文
posted @ 2018-01-26 17:43 WPInfo 阅读(7930) 评论(2) 推荐(5) 编辑
摘要: 在应用程序的开发过程中,我们往往会为软件提供一些配置项,以允许软件根据配置项灵活来做事情,比如配置日志文件路径等,此外,我们还可以用配置项来为用户存储其偏好设置等。 .NET 为我们默认提供了配置机制以及配置文件,项目中的 app.config 或者 web.config 文件(如果没有,可以添加) 阅读全文
posted @ 2018-01-23 17:17 WPInfo 阅读(2580) 评论(10) 推荐(16) 编辑
摘要: 在 XAML 应用的开发过程中,使用 MVVM 框架能够极大地提高软件的可测试性、可维护性。MVVM 的核心思想是关注点分离,使得业务逻辑从 View 中分离出来到 ViewModel 以及 Model 中,从逻辑上来讲,这也是业务逻辑应该处的位置。 具体来说,借助于数据绑定 (Data Bindi 阅读全文
posted @ 2018-01-20 11:32 WPInfo 阅读(2289) 评论(4) 推荐(5) 编辑
摘要: 在最近负责的项目中,需要实现这样一个需求:在客户端程序中,扫描当前机器所在网段中的所有机器上是否有某服务启动,并把所有已经启动服务的机器列出来,供用户选择,连接哪个服务。注意:这里所说的服务事实上就是在一个固定的端口监听基于 TCP 协议的请求的程序或者服务(如 WCF 服务)。 要实现这样的功能, 阅读全文
posted @ 2018-01-18 19:30 WPInfo 阅读(2308) 评论(12) 推荐(10) 编辑
摘要: 在前端 UI 开发中,有时,我们会遇到这样的需求:在一个 ScrollViewer 中有很多内容,而我们需要实现在执行某个操作后能够定位到其中指定的控件处;这很像在 HTML 页面中点击一个链接后定位到当前网页上的某个 anchor。 要实现它,首先我们需要看 ScrollViewer 为我们提供的 阅读全文
posted @ 2017-06-22 10:27 WPInfo 阅读(8863) 评论(1) 推荐(10) 编辑