CoreApplicationView,CoreWindow和ApplicationView之间的区别是什么?
我可以看到每个应用程序都有不同的属性等,所以我不是在问“我应该使用哪一个来获取abc
属性或方法?”。
我我询问他们之间的逻辑区别是什么。为什么有不同的课程?因为它们似乎或多或少是相同的东西 - 代表应用程序窗口的类。
答案 0 :(得分: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.ApplicationModel
和Windows.UI
,也可以分为Core
和Xaml
。
CoreApplication
和CoreApplicationView
管理应用程序模型,而Application
,CoreWindow
和Window
管理应用程序内部UI。 CoreApplication
,CoreApplicationView
和CoreWindow
管理核心功能,而Application
和Window
管理XAML UI。
从上到下是从Application
到Window
,然后是XAML。显然,该应用程序包含窗口,并且该窗口包含内部XAML UI。那么,真正的关系是什么?
CoreApplication
管理UWP应用程序的所有视图,而CoreApplicationView
是它直接管理的视图。 CoreApplicationView
包含一个CoreWindow
作为窗口和一个CoreDispatcher
作为线程模型。
您可以阅读Show multiple views for an app - UWP app developer - Microsoft Docs来学习如何编写多个视图应用程序。您将进一步了解CoreApplication
和CoreApplicationView
之间的关系。
CoreWindow
是我们都熟悉的窗口。
Windows.UI.XAML.Window
封装了CoreWindow
,以便于使用。 CoreDispatcher
是基于Windows消息循环的线程模型。正是CoreDispatcher
使窗口始终显示而不被丢弃。
大多数UWP开发人员都是普通开发人员,因此我们应该站在他们这边考虑外部和内部。普通的UWP开发人员从MainPage
开始编写代码,因此外部页面不在页面中,内部页面的XAML内容。
外部包含CoreApplication
,CoreApplicationView
和CoreWindow
,而内部包含Application
和Window
。 Application
和Window
是内部的一部分,这很奇怪吗?原因是它们管理应用程序和窗口的XAML部分。
Window
是CoreWindow
的封装,以提供额外的XAML UI功能。与ApplicationView
相同,它是CoreApplication
的封装,提供了额外的XAML UI功能。
详细来说,CoreWindow
是与Windows操作系统和UWP应用程序模型互操作的类。它提供了这些功能,例如窗口大小,位置,输入状态等。Window
是提供为窗口使用XAML UI的功能的类,例如设置窗口的XAML内容,设置窗口的标题栏,或获取窗口的Compositor
。 CoreApplicationView
是与Windows操作系统互操作的类,并提供Windows消息循环机制以及更改工作区和非工作区的功能。 ApplicationView
与Window
相同,可以为应用程序使用XAML UI。
最后,CoreWindow
和CoreApplicationView
提供了操作系统和应用程序模型的底层核心功能。 Window
和ApplicationView
封装它们以供XAML使用。