WinUI 3:下一代 Windows 桌面应用程序开发的新宠儿

WinUI 3是一个全新的用户界面框架,基于UWP(Universal Windows Platform)的XAML,可以用于桌面应用程序的开发。WinUI 3提供了一些重要的新特性,如多用户UI、灰度UI、可自定义UI,以及原生窗口嵌入等。本文将从多个方面详细介绍WinUI 3的特性和使用,供开发者参考。

一、WinUI 3 多用户

多用户UI是WinUI 3中一个非常重要的新特性。它允许多个用户在同一个桌面应用程序中共享同一个UI,每个用户都可以看到和操作同一个UI,但却不会相互影响。这主要得益于UWP中的ApplicationView类,该类可以使多个ApplicationView实例(称为多用户UI)共享同一个UI,同时与其他ApplicationView实例隔离。

接下来,我们看看如何在WinUI 3中实现多用户UI组件:

<!-- 定义用户界面 -->
<StackPanel x:Name="uiStackPanel">
  <Button Content="Click me!" Click="Button_Click"/>
</StackPanel>

private async void Button_Click(object sender, RoutedEventArgs e)
{
    // 创建一个新的 ApplicationView
    CoreApplicationView newView = CoreApplication.CreateNewView();
    int newViewId = 0;
    await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        Frame frame = new Frame();
        frame.Navigate(typeof(MainPage), null);
        Window.Current.Content = frame;
        Window.Current.Activate();

        newViewId = ApplicationView.GetForCurrentView().Id;
    });

    // 在新的 ApplicationView中显示多用户UI
    bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(
        newViewId,
        ViewSizePreference.UseMore,
        ApplicationView.GetForCurrentView().Id,
        ViewSizePreference.UseHalf);
    if (viewShown)
    {
        uiStackPanel.Background = new SolidColorBrush(Colors.Red);
    }
}

二、WinUI 3 多用户

在WinUI 3中,VB(Visual Basic)开发人员也可以使用这个框架进行Windows桌面应用程序的开发。这给VB程序员带来了一个全新的、现代化的工具链,提高了整体的编程效率。值得注意的是,VB程序不能和C++/WinRT或C++/CX互操作。

接下来,我们看看如何用VB创建WinUI 3桌面应用:

' 创建空白的 WinUI 3 桌面应用程序
dotnet new winui-desktop -lang VB

' 编译和运行
dotnet build
dotnet run

三、WinUI 3设计器

WinUI 3提供了一个全新的可视化设计器,可以帮助开发人员快速创建UI,减少手动编写XAML的工作量。设计器可以根据预定义的UI模板、主题和颜色生成UI,并可根据需要进行自定义。设计器还支持导入和导出XAML文件,方便开发人员在不同的平台上进行交互。

接下来,我们看看WinUI 3设计器的一些主要特点:

  • 支持WPF,UWP和WinUI 3的项目创建和导入
  • 内置预定义的UI模板、主题和颜色
  • 可自定义视图和布局,支持颜色和主题切换
  • 支持XAML导入和导出

四、WinUI3 DLL

WinUI 3的DLL是与框架实现交互所必需的。它包含在NuGet软件包中,并可以通过Visual Studio工具安装。该DLL包含了框架的所有公共类和接口,作为WinUI应用程序的控制器。除此之外,还有一些其他的DLL可用,如Microsoft.UI.Xaml.dll和WindowsAppSDK.Desktop.dll,它们是WinUI 3的核心依赖项。

接下来,我们看看如何使用WinUI 3 DLL进行桌面应用程序开发:

' 安装WinUI 3工具包
Install-Package Microsoft.Windows.SDK.Contracts -Version 10.0.19041.1

' 使用WinUI 3 DLL 构建桌面应用程序
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Navigation;

namespace MyApp
{
   public sealed partial class MainPage : Page
   {
       public MainPage()
       {
           this.InitializeComponent();
       }

       protected override void OnNavigatedTo(NavigationEventArgs e)
       {
           base.OnNavigatedTo(e);
           myTextBox.Text = "Hello, WinUI 3!";
       }
   }
}

五、WinUI 3设计器

在WinUI 3中,开发人员可以将WinUI 3视为一种扩展MFC(Microsoft Foundation Class)应用程序的方法。通过将MFC应用程序的视图和用户界面与WinUI 3连接,可以快速创建具有现代化用户体验的应用程序。这使得MFC程序员可以使用WinUI 3的新功能,如灰度UI、自定义UI和可重用的WinUI控件。

接下来,我们看看如何使用WinUI 3扩展MFC应用程序:

//在MFC应用程序中初始化WinUI 3
void CMyApp::InitInstance()
{
    // 使用 Microsoft.UI.Xaml.App 封装 WinUI 3
    Microsoft::UI::Xaml::App^ app = ref new MyApp();

    // 使用 MFC CWinApp 实例作为窗口句柄
    app->Initialize(reinterpret_cast(m_pMainWnd->GetSafeHwnd()));

    CWinApp::InitInstance();
}

// 创建WinUI 3应用程序并运行
[Windows::Foundation::Metadata::WebHostHidden]
public ref class MyApp sealed : public Windows::UI::Xaml::Application
{
public:
   MyApp()
   {
      this->RequestedTheme = Windows::UI::Xaml::ApplicationTheme::Dark;
   }

protected:
   virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ args) override
   {
      Windows::UI::Xaml::Controls::Frame^ rootFrame = ref new Windows::UI::Xaml::Controls::Frame();
      rootFrame->Navigate(TypeName(MyApp::typeid), nullptr);

      Windows::UI::Xaml::Window^ window = Windows::UI::Xaml::Window::Current;

      if (window->Content == nullptr)
      {
         window->Content = rootFrame;
      }

      window->Activate();
   }
};

六、WinUI 3 有前景吗?

WinUI 3在Windows桌面应用程序开发中具有很大的潜力。它提供了现代化、可扩展和可自定义的用户界面,使开发人员可以更快地构建出专业级的应用程序。除此之外,还有更多特性值得期待,如 WinUI 3 在 Windows 11 上的支持等等。

总之,WinUI 3是一个非常值得尝试的框架,它可以提高从WPF到UWP以及WinUI应用程序开发的生产率,给我们带来更好的开发体验和更高的用户体验。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/181400.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-23 06:40
下一篇 2024-11-23 06:40

相关推荐

  • Python桌面应用开发

    本篇文章将从多个方面介绍Python开发桌面应用的方法和技巧,旨在为读者提供全面的指导。Python是一种高级编程语言,它简单易学、功能强大。当开发者希望开发桌面应用时,Pytho…

    编程 2025-04-29
  • Web程序和桌面程序的区别

    Web程序和桌面程序都是进行软件开发的方式,但是它们之间存在很大的区别。本文将从多角度进行阐述。 一、运行方式 Web程序运行于互联网上,用户可以通过使用浏览器来访问它。而桌面程序…

    编程 2025-04-29
  • Node-Webkit:基于Web技术的桌面应用开发

    Node-Webkit是一个基于Web技术和Node.js的桌面应用程序开发平台,它将Web前端技术(HTML、CSS、JavaScript等)与Node.js后台技术无缝集成,可…

    编程 2025-04-23
  • 如何把桌面设置到 D 盘

    一、找到桌面设置的选项 把桌面设置到 D 盘,需要找到桌面设置的选项。在 Windows 10 系统中,可以按下“Win+I”打开“设置”窗口,然后选择“个性化”选项卡,接着选择“…

    编程 2025-04-22
  • 使用ReactCLI进行Web应用程序开发的最佳实践

    React是一个流行的JavaScript库,用于构建用户界面。 ReactCLI是一种适用于React的可重复使用,可扩展的命令行界面,它支持构建React应用程序和组件。本文将…

    编程 2025-04-18
  • 桌面窗口管理器占用内存过高怎么办

    一、检查应用程序的资源占用 桌面窗口管理器(Desktop Window Manager,简称DWM)在Windows系统中负责窗口的渲染、动画效果、屏幕截图等功能。DWM占用过高…

    编程 2025-04-12
  • vmwareandroid——让移动应用程序开发更加简单

    一、什么是vmwareandroid vmwareandroid是一款虚拟化工具,它提供一个Android应用程序开发环境在Windows和Mac操作系统中运行,可以让开发人员更加…

    编程 2025-04-12
  • CMR硬盘详解-以桌面移动硬盘为例

    一、CMR硬盘的特点 CMR全称为Conventional Magnetic Recording,也就是传统磁记录,与SMR(Shingled Magnetic Recording…

    编程 2025-04-12
  • 深入了解Electron桌面开发

    一、快速入门 Electron是一个基于Node.js和Chromium的框架,用于快速构建跨平台桌面应用程序。在开始使用Electron之前,您需要确保您已经安装了Node.js…

    编程 2025-03-12
  • 小程序开发如何提高网站流量

    小程序开发已成为了近几年来最热门的开发形式之一。不仅在移动端有广泛的应用,在网站上也能够发挥重要作用。在这篇文章中,我们将探讨小程序开发如何提高网站流量的几个重要方面。 一、微信小…

    编程 2025-02-25

发表回复

登录后才能评论