.NET MAUI 窗口 您所在的位置:网站首页 macbook怎样刷新页面 .NET MAUI 窗口

.NET MAUI 窗口

2023-05-10 05:06| 来源: 网络整理| 查看: 265

.NET MAUI 窗口 项目 05/05/2023

.NET 多平台应用 UI (.NET MAUI) Window 类提供创建、配置、显示和管理多个窗口的功能。

Window 定义以下属性:

FlowDirection类型 FlowDirection为 ,定义窗口 UI 元素的布局方向。 Height,属于 类型 double,指定 Windows 上窗口的高度。 MaximumHeight,类型 double为 ,表示桌面平台上窗口的最大高度。 有效值介于 0 和 double.PositiveInfinity之间。 MaximumWidth,属于 类型 double,表示桌面平台上窗口的最大宽度。 有效值介于 0 和 double.PositiveInfinity之间。 MinimumHeight,类型 double为 ,表示桌面平台上窗口的最小高度。 有效值介于 0 和 double.PositiveInfinity之间。 MinimumWidth,类型 double为 ,表示桌面平台上窗口的最小宽度。 有效值介于 0 和 double.PositiveInfinity之间。 Overlays,属于 类型 IReadOnlyCollection,表示窗口覆盖的集合。 Page,类型 Page为 ,指示窗口正在显示的页面。 此属性是 类的内容 Window 属性,因此不需要显式设置。 Title,属于 类型 string,表示窗口的标题。 Width,属于 类型 double,指定 Windows 上的窗口宽度。 X,属于 类型 double,指定 Windows 上窗口的 X 坐标。 Y,属于 类型 double,指定 Windows 上窗口的 Y 坐标。

这些属性(属性除外 Overlays )由 BindableProperty 对象提供支持,这意味着它们可以成为数据绑定的目标,并设置样式。

类 Window 定义以下事件:

Created,创建窗口时引发。 Resumed,当窗口从睡眠状态恢复时引发。 Activated,在激活窗口时引发。 Deactivated,在停用窗口时引发。 Stopped,在窗口停止时引发。 Destroying,在销毁窗口时引发。 SizeChanged,当窗口更改大小时,在桌面平台上引发。 Backgrounding,带有附带 BackgroundingEventArgs 的 对象,该对象在窗口关闭或进入后台状态时在 iOS 和 Mac Catalyst 上引发。 此事件可用于将任何string状态保存到 对象的 属性BackgroundingEventArgs,OS 将保留该状态State,直到恢复窗口为止。 当窗口恢复时,状态是通过 IActivationState 方法的 参数 CreateWindow 提供的。 DisplayDensityChanged,附带一个 附带 DisplayDensityChangedEventArgs 的 对象,当窗口 (DPI) 的有效点数 (时,在 Android 和 Windows 上引发该对象。

有关生命周期事件及其关联的替代的详细信息,请参阅 应用生命周期。

类 Window 还定义了以下模式导航事件:

ModalPopped,具有 ModalPoppedEventArgs,这是在以模式方式弹出视图时引发的。 ModalPopping,具有 ModalPoppingEventArgs,这是在以模式方式弹出视图时引发的。 ModalPushed,具有 ModalPushedEventArgs,这是以模式方式推送视图后引发的。 ModalPushing,具有 ModalPushingEventArgs,这是以模式方式推送视图时引发的。 PopCanceled,在取消模式弹出时引发。

类 VisualElement 具有公开 Window 父 Window 对象的 属性。 可以从任何页面、布局或视图访问此属性,以操作 Window 对象。

创建窗口

默认情况下,将 属性设置为 类中的 App 对象时,MainPage.NET MAUI 会创建Window一个 Page 对象。 但是,还可以重写 CreateWindow 类中的 App 方法以创建 Window 对象:

namespace MyMauiApp { public partial class App : Application { public App() { InitializeComponent(); MainPage = new MainPage(); } protected override Window CreateWindow(IActivationState activationState) { Window window = base.CreateWindow(activationState); // Manipulate Window object return window; } } }

Window虽然 类具有默认构造函数和接受Page参数的构造函数(表示应用的根页),但你也可以调用基CreateWindow方法以返回 .NET MAUI 创建Window的对象。

此外,还可以创建自己的 Window派生对象:

namespace MyMauiApp { public class MyWindow : Window { public MyWindow() : base() { } public MyWindow(Page page) : base(page) { } // Override Window methods } }

Window然后,可以通过在 App 类的 重写中创建 MyWindowCreateWindow 对象来使用 派生类。

无论对象的创建方式 Window 如何,它都将是应用中根页的父级。

多窗口支持

可以在 Android、iPad 上的 iOS (iPadOS) 、Mac Catalyst 和 Windows 上同时打开多个窗口。 这可以通过创建 Window 对象并使用 对象上的 Application 方法打开它OpenWindow来实现:

Window secondWindow = new Window(new MyPage()); Application.Current.OpenWindow(secondWindow);

Application.Current.Windows类型的IReadOnlyList集合维护对向 对象注册Application的所有Window对象的引用。

可以使用 方法关闭 Application.Current.CloseWindow Windows:

// Close a specific window Application.Current.CloseWindow(secondWindow); // Close the active window Application.Current.CloseWindow(GetParentWindow());

重要

多窗口支持适用于 Android 和 Windows,无需其他配置。 但是,iPadOS 和 Mac Catalyst 需要其他配置。

iPadOS 和 macOS 配置

若要在 iPadOS 和 Mac Catalyst 上使用多窗口支持,请将名为 的 SceneDelegate 类添加到 平台 > iOS 和 平台 > MacCatalyst 文件夹:

using Foundation; using Microsoft.Maui; using UIKit; namespace MyMauiApp; [Register("SceneDelegate")] public class SceneDelegate : MauiUISceneDelegate { }

然后,在 XML 编辑器中,打开 Platforms > iOS > Info.plist 文件和 Platforms > MacCatalyst > Info.plist 文件,并将以下 XML 添加到每个文件的末尾:

UIApplicationSceneManifest UIApplicationSupportsMultipleScenes UISceneConfigurations UIWindowSceneSessionRoleApplication UISceneConfigurationName __MAUI_DEFAULT_SCENE_CONFIGURATION__ UISceneDelegateClassName SceneDelegate

重要

多窗口支持不适用于 iOs for iPhone。

定位窗口并调整其大小

可以通过在 对象上设置 X、Y、 Width和 属性,以编程方式为 Windows 上的 .NET MAUI 应用定义窗口的位置和Height大小。Window

警告

Mac Catalyst 不支持通过设置 X、、 YWidth和 Height 属性以编程方式调整窗口大小或重新定位窗口。

例如,若要在启动时设置窗口位置和大小,应重写 CreateWindow 类中的 App 方法,并在 对象上Window设置 X、Y、 Width和 Height 属性:

public partial class App : Application { public App() { InitializeComponent(); } protected override Window CreateWindow(IActivationState activationState) => new Window(new AppShell()) { Width = 700, Height = 500, X = 100, Y = 100 }; }

或者,可以通过从任何页面、布局或视图中访问 Window 属性来定位窗口并调整其大小。 例如,以下代码演示如何将窗口置于屏幕中心:

// Get display size var displayInfo = DeviceDisplay.Current.MainDisplayInfo; // Center the window Window.X = (displayInfo.Width / displayInfo.Density - Window.Width) / 2; Window.Y = (displayInfo.Height / displayInfo.Density - Window.Height) / 2;

有关获取设备的屏幕指标的信息,请参阅 设备显示信息。

Mac Catalyst

Mac Catalyst 不支持以编程方式调整窗口大小或重新定位窗口。 但是,启用大小调整的解决方法是将 MinimumWidth 和 MaximumWidth 属性设置为窗口的所需宽度,并将 MinimumHeight 和 MaximumHeight 属性设置为窗口的所需高度。 这将触发重设大小,然后可以将属性还原回其原始值:

Window.MinimumWidth = 700; Window.MaximumWidth = 700; Window.MinimumHeight = 500; Window.MaximumHeight = 500; // Give the Window time to resize Dispatcher.Dispatch(() => { Window.MinimumWidth = 0; Window.MinimumHeight = 0; Window.MaximumWidth = double.PositiveInfinity; Window.MaximumHeight = double.PositiveInfinity; });


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有