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/zh-hant/n/181400.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-23 06:40
下一篇 2024-11-23 06:40

相關推薦

發表回復

登錄後才能評論