应用 .NET MAUI,不仅能够构建跨平台挪动应用程序,还能够为 Windows 和 Mac 制作精美的桌面应用程序。您的应用程序可能只面向桌面平台,又或者是跨挪动和桌面。无论哪种形式,无论用户应用什么设施,您都心愿为他们带去最佳的用户体验。为此,您须要依附运行应用程序的硬件和操作系统。就桌面而言,.NET MAUI 提供了几个独特的性能来加强用户的体验,明天咱们将具体解说5个优良的性能。

多窗口

.NET MAUI 的一个根本变化是引入了 Window 作为根底。当您创立、运行 .NET MAUI 应用程序时,利用会主动创立一个默认的窗口并用其显示内容。应用程序有一个新的 CreateWindow 办法,在创立任何新窗口时都会调用该办法。当利用在桌面(或平板电脑)上运行有更多可利用空间时,您可能想要创立第二个或第三个窗口而不是到处浏览。让咱们以天气应用程序为例,一旦用户浏览到一个城市,您可能心愿显示更多信息,包含地图。能够抉择导航到该页面,或应用内置 API 关上一个全新的窗口:

var weatherDetails = new Window(new WeatherDetailsPage());Application.Current.OpenWindow(weatherDetails);

当初咱们的用户能够领有多个视图,而不用局限于一个窗口的信息。用户能够在任何时候敞开一个窗口,或者咱们也能够用程序敞开它。

// Close a specific windowApplication.Current.CloseWindow(weatherDetails);// Close the active windowApplication.Current.CloseWindow(GetParentWindow());

无关配置多窗口反对的更多信息,请浏览多窗口文档。

顶级菜单栏

桌面应用程序最常见的一个性能就是菜单栏,该菜单栏能够集成到 Windows 上的应用程序中,也能够集成到 Mac 上的零碎菜单栏中。通过应用 .NET MAUI,只需几行代码,您就可轻松集成菜单栏。这样有一个益处,用户在 iPad 上应用键盘运行应用程序时,他们也能够拜访菜单。以这个天气应用程序为例,您可能想有一个菜单,容许用户增加、删除或浏览不同的地位。

每个 ContentPage 都有一个 MenuBarItems 汇合,该汇合能够有多个级别的菜单:

<ContentPage ...>     <ContentPage.MenuBarItems>         <MenuBarItem Text="File">             <MenuFlyoutItem Text="Exit"                             Command="{Binding ExitCommand}" />         </MenuBarItem>         <MenuBarItem Text="Locations">             <MenuFlyoutSubItem Text="Change Location">                 <MenuFlyoutItem Text="Redmond, USA"                                 Command="{Binding ChangeLocationCommand}"                                 CommandParameter="Redmond" />                 <MenuFlyoutItem Text="London, UK"                                 Command="{Binding ChangeLocationCommand}"                                 CommandParameter="London" />                 <MenuFlyoutItem Text="Berlin, DE"                                 Command="{Binding ChangeLocationCommand}"                                 CommandParameter="Berlin"/>             </MenuFlyoutSubItem>             <MenuFlyoutSeparator />                         <MenuFlyoutItem Text="Add Location"                             Command="{Binding AddLocationCommand}" />             <MenuFlyoutItem Text="Edit Location"                             Command="{Binding EditLocationCommand}" />             <MenuFlyoutItem Text="Remove Location"                             Command="{Binding RemoveLocationCommand}" />                                     </MenuBarItem>         <MenuBarItem Text="View">             <!--More items-->         </MenuBarItem>     </ContentPage.MenuBarItems> </ContentPage> 

您能够间接在 XAML 中创立这些菜单项,也能够通过代码编程创立动静菜单。菜单项能够被启用或禁用,具备分隔符,子菜单等项,在 Windows 应用程序上具备图标,并且除了绑定命令之外,还能触发 Clicked 事件。请您浏览菜单栏文档 menu bar documentation 以获取更多详细信息。

Context menus

有时,您心愿用户右击元素时会显示更多选项。这时您就须要一个相似于基于特定上下文菜单栏的菜单。这时,.NET MAUI 应用程序中就呈现了上下文菜单 context menus。它们具备与菜单栏作用相似的 API,但 API 须要被搁置在特定控件上。例如,您可能想在天气利用中增加对特定城市的评论,也可能还想关上一个新窗口,而后提供一个 Editor 区域让用户编辑。

咱们能够将 MenuFlyout 利用于 Editor,并用相似于后面菜单栏的 MenuFlyoutItems 填充它。

<Editor> <FlyoutBase.ContextFlyout> <MenuFlyout> <MenuFlyoutItem Text="Bold" Clicked="OnBoldClicked"/> <MenuFlyoutItem Text="Italics" Clicked="OnItalicsClicked"/> <MenuFlyoutItem Text="Underline" Clicked="OnUnderlineClicked"/> </MenuFlyout> </FlyoutBase.ContextFlyout> </Editor>

这和应用菜单栏成果一样,您还能够绑定命令,让其能够触发事件,具备图标,子菜单,分隔线等。查看上下文菜单文档 context menu documentation 理解所有详细信息。

Tooltips

Tooltips 是一种能够在应用程序中增加性能并加强用户体验的疾速简便的办法。您的桌面用户能够应用鼠标和键盘,这意味着您能够在应用程序中的控件彷徨时提供其余上下文。应用附加的属性 TooltipProperties.Text 使您能够指定向用户鼠标悬停显示的其余信息。假如咱们要在评论页面上的“保留”按钮中增加其余信息。咱们须要做的就是设置属性,就像这样它会顺利运行。

<Button Text="Save"        ToolTipProperties.Text="Click to save your comment" />

这也能够在任何控件的代码中以编程形式设置:

var button = new Button { Text = "Save" };ToolTipProperties.SetText(button, "lick to save your comment");

Pointer gestures

说到在用户应用鼠标导航时加强桌面应用程序,.NET MAUI 有几个专门针对鼠标 Pointer 的新手势识别器。您能够轻松地查看任何 Pointer 何时输出,退出或移至控件外部。

<Image Source="dotnet_bot.png">    <Image.GestureRecognizers>        <PointerGestureRecognizer PointerEntered="OnPointerEntered"                                  PointerExited="OnPointerExited"                                  PointerMoved="OnPointerMoved" />  </Image.GestureRecognizers></Image>

当 Pointer 与咱们的图像互动时,咱们会失去事件。一旦取得事件,咱们还能够取得 Pointer 在图像外部或绝对于图像的地位。

void OnPointerExited(object sender, PointerEventArgs e){    // Position inside window    Point? windowPosition = e.GetPosition(null);    // Position relative to an Image    Point? relativeToImagePosition = e.GetPosition(image);    // Position relative to the container view    Point? relativeToContainerPosition = e.GetPosition((View)sender);}

就像这样,咱们能够用 Point 在应用程序中执行操作。要理解无关不同手势辨认者的更多信息,请确保浏览该文档。

以上,咱们介绍了5个很棒的性能来加强你桌面上的 .NET MAUI 应用程序。这仅仅是开始,因为还有更多的优质性能能够在所有平台上构建杰出的应用程序。请浏览所有 .NET MAUI documentation 以获取可能须要利用的其余性能和控件。

点我返回 .NET MAUI 官网,理解更多桌面性能~