通过XAML Islands使Windows桌面应用程序现代化

栏目: 编程工具 · 发布时间: 7年前

内容简介:如果你的信息来源仅限于互联网,你可能会觉得,Windows桌面开发已经彻底完蛋了,但根据Visual Studio中的遥测数据,每个月有大约240万开发人员在积极地开发桌面应用程序,比20个月前增长了50%。有一个如此大的社区支持,微软正在寻找方法,帮助开发人员把那些资产整合进Windows 10。关于微软的Windows开发,其中一个最大的抱怨是微软在Winforms和WPF上投入少;Windows 10提供的大部分新特性都只是针对UWP构建的。虽然我们现在可以从.NET Framework调用UWP

如果你的信息来源仅限于互联网,你可能会觉得,Windows桌面开发已经彻底完蛋了,但根据Visual Studio中的遥测数据,每个月有大约240万开发人员在积极地开发桌面应用程序,比20个月前增长了50%。有一个如此大的社区支持,微软正在寻找方法,帮助开发人员把那些资产整合进Windows 10。

XAML Islands

关于微软的Windows开发,其中一个最大的抱怨是微软在Winforms和WPF上投入少;Windows 10提供的大部分新特性都只是针对UWP构建的。虽然我们现在可以从.NET Framework调用UWP API,但仅适用于不涉及UI的情况。

为了解决这个问题,微软创建了两个新控件:WinForms XAML Host和WPF XAML Host,使开发人员可以 把为UWP编写的UI嵌入到现有的WinForms/WPF应用程序

UWP封装和Windows 7回退

开发人员之所以继续使用WinForms或WPF,其中一个原因是为了支持Windows 7。后来,人们需要新推出的XAML Islands,这是因为它使得应用程序不在Windows 10上也可以正常运行。

其中一个例子是现在已经可以使用的WebView。如果应用程序在Windows 10上运行,那么WebView就是Edge浏览器的宿主。如果是运行在Windows 7上,那么它就会加载IE浏览器控件。

其他控件还处于规划阶段,包括MediaPlayer、InkCanvas/InkToolBar、Map和SwapChainPanel。

空域

把WinForms和WPF混合使用的开发人员都熟悉“空域(airspace)”的概念,它是用于处理在同一个窗口中来自不同UI框架的控件相互重叠的问题。

在Win32开发中,屏幕上的每个对象自己都有一个在OS层面注册的窗口句柄(HWND)。HWND关联着屏幕上的一个矩形,对象可以在其中渲染其内容。一般来说,每个WinForms控件都会获得自己的HWND,而大多数WPF控件都共享整个窗口的HWND。

对于XAML Islands(WinForms和WPF),HWND创建后供UWP控件使用。这会带来一些不明显的影响。例如,如果你旋转UWP控件,HWND不会随之旋转,也就是说,HWND需要更大一些才能为它提供空间。

弹出式上下文菜单尤其难以处理。它们通常有自己的HWND,但是,该HWND不一定能够和XAML的HWND正确堆叠,导致菜单看上去在另一个控件后面。

线程模型

目前在UWP中,每个顶级窗口预计都有自己专有的UI线程。例如说,你有一个主-从视图,从视图是用UWP编写的。你可以通过以下几种方式实现:

  • 从视图共享主视图的窗口:没问题。
  • 从视图有自己的顶级窗口,不共享对象:没问题。
  • 从视图有自己的顶级窗口,但和主视图共享对象:可能会有竞态条件、UI跨线程问题等。

最终,这个问题将通过引入轻量级窗口来解决。

查看英文原文: Modernizing Windows Desktop Applications with XAML Islands


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

大话存储

大话存储

张冬 / 清华大学出版社 / 2008-11 / 58.00元

网络存储,是近二十年来的新兴行业。从纸带到硬盘再到大型磁盘阵列,存储系统经历了从简单到复杂,从单块硬盘到存储区域网络(SAN)。网络存储行业目前已经是一个步入正轨的IT行业了。. 网络存储是一个涉及计算机硬件以及网络协议/技术、操作系统以及专业软件等各方面综合知识的领域。目前国内阐述网络存储的书籍少之又少,大部分是国外作品,对存储系统底层细节的描述不够深入,加之术语太多,初学者很难真正理解网......一起来看看 《大话存储》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具