C# CoreApplicationView vs CoreWindow vs ApplicationView

C# CoreApplicationView vs CoreWindow vs ApplicationView,c#,.net,windows-runtime,windows-store-apps,win-universal-app,C#,.net,Windows Runtime,Windows Store Apps,Win Universal App,和之间有什么区别 我可以看到每个应用程序都有不同的属性等,所以我不是在问“我应该使用哪一个来获取abc属性或方法?” 我在问他们在逻辑上有什么不同。为什么有不同的课程?因为它们似乎或多或少是相同的东西——一个代表应用程序窗口的类。您提到的类之间有一些不同。我们可以通过两个维度来区分它们: 结构(见从上到下的部分) 功能(请参见外部或内部的部分) 我专门为这个问题写了一篇帖子,请看 有时我们必须查看带有名称空间的完整类名,以确定它们的含义 Windows.ApplicationModel.

和之间有什么区别

我可以看到每个应用程序都有不同的属性等,所以我不是在问“我应该使用哪一个来获取
abc
属性或方法?”


我在问他们在逻辑上有什么不同。为什么有不同的课程?因为它们似乎或多或少是相同的东西——一个代表应用程序窗口的类。

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

  • 结构(见从上到下的部分)
  • 功能(请参见外部或内部的部分)
我专门为这个问题写了一篇帖子,请看


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

  • 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.corespatcher
  • Windows.UI.Xaml.dispatchermer
我们可以将它们拆分为
Windows.ApplicationModel
Windows.UI
,或者将它们拆分为
Core
Xaml

CoreApplication
CoreApplicationView
管理应用程序模型,
application
coreewindow
Window
管理应用程序内部UI。
CoreApplication
CoreApplicationView
CoreWindow
管理核心功能,而
应用程序
窗口
管理XAML UI

自上而下 从上到下是从
应用程序
窗口
,然后到XAML。很明显,应用程序包含窗口,窗口包含内部XAML UI。那么,真正的关系是什么

CoreApplication
管理UWP应用程序的所有视图,
CoreApplicationView
是它直接管理的视图。
CoreApplicationView
包含一个
CoreWindow
作为窗口,一个
CoreDispatcher
作为线程模型


▲ UWP应用程序视图

您可以通过阅读了解如何编写多视图应用程序。您将进一步了解
CoreApplication
CoreApplicationView
之间的关系

CoreWindow
是我们都熟悉的窗口。
Windows.UI.XAML.Window
封装了
CoreWindow
,以便于使用
CoreDispatcher
是基于windows消息循环的线程模型。正是
coredipatcher
使窗口始终显示,而不被处理

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

外部包含
核心应用程序
核心应用程序视图
核心窗口
,而内部包含
应用程序
窗口
应用程序
窗口
是内部部分,这是否奇怪?原因是它们管理应用程序和窗口的XAML部分

窗口
是对
CoreWindow
的封装,以提供额外的XAML UI功能。与
ApplicationView
相同,它是
CoreApplication
的封装,提供额外的XAML UI功能

具体来说,
corewindown
是与Windows操作系统和UWP应用程序模型进行互操作的类。它提供诸如窗口大小、位置、输入状态等功能。
窗口
是一个类,它提供了为窗口使用XAML UI的能力,例如设置窗口的XAML内容、设置窗口的标题栏或获取窗口的
合成器
CoreApplicationView
是一个与Windows操作系统互操作的类,它提供Windows消息循环机制以及更改客户端区域和非客户端区域的能力。
应用程序视图
窗口
相同,提供了为应用程序使用XAML UI的能力


总之,
CoreWindow
CoreApplicationView
提供了操作系统和应用程序模型的底层核心功能。
窗口
ApplicationView
将它们封装起来以供XAML使用。

核心对象通常供应用程序框架使用(XAML、WinJS)。然后,这些框架以与编程语言更加匹配的方式公开
Core
对象,例如,
corefown.SizeChanged
成为XAML中的
Window.SizeChanged
事件和JavaScript中的
Window.onresize
事件。
CoreWindow.KeyDown
事件在XAML中成为
UIElement.KeyDown
事件,在JavaScript中成为
HtmleElement.onkeydown
事件,通常使用框架对象,而不是核心对象。@RaymondChen谢谢。@RaymondChen可能值得在