using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace SynchronizationTest003 { class Program { static void Main(string[] args) { SynchronizationContext sc = new SynchronizationContext(…
本文将介绍 Windows 系统中高 DPI 开发的基础知识.由于涉及到坐标转换,这种转换经常发生在计算的不知不觉中:所以无论你使用哪种 Windows 下的 UI 框架进行开发,你都需要了解这些内容,以免不断踩坑. 本文内容 各种不同的 Windows 桌面 UI 框架 对普通用户而言的 DPI 级别 对 Windows 应用而言的 DPI 感知级别(Dpi Awareness) 不同 UI 框架对 DPI 的支持情况 UWP WPF Windows Forms 其他 UI 框架 混合 DPI…
今年五月的 Build 大会上,微软说 .NET Core 3.0 将带来 WPF / Windows Forms 这些桌面应用的支持.当然,是通过 Windows 兼容包(Windows Compatibility Pack)实现的.为了提前检查你的程序是否能在未来跑在 .NET Core 3.0 上,微软在 2018年8月8日 推出了 .NET Core 3.0 Desktop API Analyzer,帮助你提前检查你的程序能有多容易迁移到 .NET Core 3.0 本文将介绍其使用方法…
原文:设置WPF窗口相对于非WPF窗口的位置 在前一个Post当中,指出了在WPF的WindowInteropHelper类中的一个BUG:通过WindowInteropHelper的Owner属性不能实现把WPF窗口的Owner属性设置为一个非WPF窗口的句柄. 在我的Post帖出后不到一天,在WPF SDK的Blog上,就针对这个BUG给出了一个非常完美的解决方案.既然不同通过设置WindowStartupLocation.CenterOwner来改变窗口的位置.那么我们就用WindowSt…
本文转自 https://blog.csdn.net/WPwalter/article/details/82859449 使用 .NET Core 3.0 Desktop API Analyzer 分析现有 WPF / Windows Forms 程序能否顺利迁移到 .NET Core 3.0 ) .NET Core 3.0 Desktop API Analyzer 分析一个 WPF 程序 分析更复杂的程序 着手解决兼容性问题 一些错误 未来的迁移 分析现有 WPF / Windows Form…
如果WPF Content是寄宿在Win32 窗体或Windows Form中,则在WPF模块中可能不会存在WPF Window(WPF模块的根可能是个UserControl).如果在WPF模块中弹出对话框,则设定其Owner不是那么方便. WPF Window class只提供了Window类型的Owner属性. 但是.net framework提供了WindowInteropHelper.Owner 属性可以将Window的Owner设为一个handle.因此我们只要能获取到任何UI元素的H…
原文:将 C++/WinRT 中的线程切换体验带到 C# 中来(WPF 版本) 如果你要在 WPF 程序中使用线程池完成一个特殊的任务,那么使用 .NET 的 API Task.Run 并传入一个 Lambda 表达式可以完成.不过,使用 Lambda 表达式会带来变量捕获的一些问题,比如说你需要区分一个变量作用于是在 Lambda 表达式中,还是当前上下文全局(被 Lambda 表达式捕获到的变量).然后,在静态分析的时候,也难以知道此 Lambda 表达式在整个方法中的执行先后顺序,不利于分…
概述 WPF 和 Winform 是两个单独的平台,但二者又都是基于 .NET 4.0 以上版本开发的,所以很多.NET开发人员就开始研究如何在WPF中使用Winform.微软已经架设了两个开发平台的之间的通信桥梁,目前为止二者相互转换使用已经相当成熟了,今天主要给大家讲讲如何在这两个平台下调用 ComponentOne 的控件. 本文主要用 FlexReport .NET报表控件,作为介质进行两个平台的链接 Step 1 首先,我们还是把两个平台的基本通信通道搭建起来,很简单,网上有很多步骤,…
Windows 10 自 1703 开始引入第二代的多屏 DPI 机制(PerMonitor V2),而 WPF 框架可以支持此第二代的多屏 DPI 机制. 本文将介绍 WPF 框架利用第二代多屏 DPI 机制进行高 DPI 适配的方法.同时,也介绍低版本的 WPF 或者低版本的操作系统下如何做兼容. 本文内容 添加应用程序清单文件 如果你没有 app.config,如何添加? 如果你没有 app.manifest,如何添加? 了解 WPF 清单文件中的 DPI 感知设置 DpiAware Dp…
四. 只读依赖属性 在以前在对于非WPF的功能来说,对于类的属性的封装中,经常会对那些希望暴露给外界只读操作的字段封装成只读属性,同样在WPF中也提供了只读属性的概念,如一些 WPF控件的依赖属性是只读的,它们经常用于报告控件的状态和信息,像IsMouseOver等属性, 那么在这个时候对它赋值就没有意义了. 或许你也会有这样的疑问:为什么不使用一般的.Net属性提供出来呢?一般的属性也可以绑定到元素上呀?这个是由于有些地方必须要用到只读依赖属性,比如 Trigger等,同时也因为内部可能有多个…