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