CoreApplicationView与CoreWindow与ApplicationView

isp*_*iro 4 .net c# windows-runtime windows-store-apps win-universal-app

CoreApplicationViewCoreWindowApplicationView有什么区别?

我可以看到每个应用程序都有不同的属性等,因此我没有问“应该使用哪个abc属性或方法?”。

我问他们之间的逻辑区别什么。为什么会有不同的班级?由于它们似乎或多或少是同一件事-代表应用程序窗口的类。

wal*_*rlv 5

您提到的类之间有一些差异。我们可以通过两个维度来区分它们:

  • 结构(请参见从上至下部分)
  • 功能(请参阅“ 用于外部或用于内部”部分)

我专门针对此问题写了一篇文章,请参阅http://walterlv.github.io/post/core-application-window-of-uwp-en.html


有时,我们必须使用名称空间查看完整的类名称,以确定它们的含义。

  • Windows.ApplicationModel.Core.CoreApplication
  • Windows.ApplicationModel.Core.CoreApplicationView
  • Windows.UI.Xaml.Application
  • Windows.UI.Core.CoreWindow
  • Windows.UI.Xaml.Window

另外,如果您对标题栏感兴趣,

  • Windows.ApplicationModel.Core.CoreApplicationViewTitleBar
  • Windows.UI.ViewManagement.ApplicationViewTitleBar

另外,如果您对线程模型感兴趣,

  • Windows.UI.Core.CoreDispatcher
  • Windows.UI.Xaml.DispatcherTimer

我们可以将它们拆分为Windows.ApplicationModelWindows.UI,也可以将它们拆分为CoreXaml

CoreApplicationCoreApplicationView管理应用模型,以及ApplicationCoreWindow以及Window管理应用程序内的用户界面。的CoreApplicationCoreApplicationViewCoreWindow管理的核心功能,但ApplicationWindow管理XAML UI。

从上到下

从上到下是从ApplicationWindow,然后是XAML。显然,该应用程序包含窗口,并且该窗口包含内部XAML UI。那么,真正的关系是什么?

CoreApplication管理一个UWP应用程序的所有意见和CoreApplicationView是它直接管理的看法。A CoreApplicationView包含a CoreWindow作为窗口和a CoreDispatcher作为线程模型。

UWP应用程序视图
?UWP应用程序视图

您可以阅读为应用程序显示多个视图-UWP应用程序开发人员-Microsoft文档,以了解如何编写多个视图应用程序。你会知道更多有关之间的关系CoreApplicationCoreApplicationView

CoreWindow是我们都熟悉的窗口。 Windows.UI.XAML.Window封装以便CoreWindow于使用。CoreDispatcher是基于Windows消息循环的线程模型。这是CoreDispatcher该保持窗口来显示所有的时间而不布置。

对于外部还是对于内部

大多数UWP开发人员都是普通开发人员,因此我们应该站在他们这边考虑外部和内部。普通的UWP开发人员从开始编写代码MainPage,因此外部不在页面外,内部是页面的XAML内容。

外部分包含CoreApplicationCoreApplicationViewCoreWindow而内部分包含ApplicationWindowApplicationWindow是内部部分,这很奇怪吗?原因是它们管理应用程序和窗口的XAML部分。

Window是的封装CoreWindow来提供额外的XAML UI功能。与一样ApplicationView,它是CoreApplication提供额外的XAML UI功能的封装。

详细地说,CoreWindow是与Windows操作系统和UWP应用程序模型互操作的类。它提供了诸如窗口大小,位置,输入状态等功能。Window该类提供了对窗口使用XAML UI的能力,例如设置窗口的XAML内容,设置窗口的标题栏。 ,或获取Compositor窗口的。该CoreApplicationView是类互操作与Windows操作系统提供窗口消息循环和改变客户区和非客户区的能力的机制。的ApplicationView是一样的Window,提供了使用XAML UI应用程序的能力。

总之,CoreWindowCoreApplicationView提供了操作系统和应用程序模型的底层核心功能。在WindowApplicationView它们封装为XAML用法。