我可以在 MAUI 项目中使用现有的 WinUI3 控件吗?

2023-11-27

是否可以在MAUI项目中使用WinUI 3现有的控件?就像控件一样https://github.com/microsoft/WinUI-Gallery

我将 WinUI 包安装到我的 MAUI 项目中

<ItemGroup>
    <PackageReference Include="Microsoft.UI.Xaml" Version="2.7.1" />
    <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.1.1" />
</ItemGroup>

并编辑App.xaml

<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:MauiWithWinui"
            xmlns:controls="using:Microsoft.UI.Xaml.Controls"
             x:Class="MauiWithWinui.App">
    <Application.Resources>
        <controls:XamlControlsResources>
            <controls:XamlControlsResources.MergedDictionaries>
                <ResourceDictionary Source="Resources/Styles/Colors.xaml" />
                <ResourceDictionary Source="Resources/Styles/Styles.xaml" />
            </controls:XamlControlsResources.MergedDictionaries>
        </controls:XamlControlsResources>
    </Application.Resources>
</Application>

Platform/Windows/App.xaml

<maui:MauiWinUIApplication
    x:Class="MauiWithWinui.WinUI.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:maui="using:Microsoft.Maui"
    xmlns:local="using:MauiWithWinui.WinUI"
    xmlns:controls="using:Microsoft.UI.Xaml.Controls">
    <Application.Resources>
        <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls"/>
    </Application.Resources>
</maui:MauiWinUIApplication>

但是当我去MAUI的某个Page下使用WinUI控件时,提示找不到该控件

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:controls="using:Microsoft.UI.Xaml.Controls"
             x:Class="MauiWithWinui.MainPage">
    <Grid>
        <controls:RatingControl AutomationProperties.Name="RatingControl with placeholder" PlaceholderValue="3" />
    </Grid>
</ContentPage>

MAUI项目仅针对Windows平台,尽管我知道winui3项目是更好的选择


你正在混合框架。如果您想使用 WinUI 控件,那么您几乎是对的,除了最后一步将 WinUI 控件添加到 Maui XAML 中。

您需要做的是创建一个位于 maui 页面和平台视图之间的处理程序:https://github.com/mattleibow/MauiWinUIRatingControlDemo

需要这样做的原因是该代码也将在 Android 上运行,因此还需要做一些事情。如果你现在尝试为 Android 构建代码,甚至无法编译。 MAUI 位于两者之间并形成一个抽象,允许您为每个平台做其他事情。

如果您使用处理程序在 Windows 上运行我的代码,您将获得评级控制。如果您在 Android 上运行它,您会得到一个空白视图,因为 Android 处理程序尚未创建。然后,您可以决定如何为 Android 或 iOS 制作此处理程序,并相应地连接事件和属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在 MAUI 项目中使用现有的 WinUI3 控件吗? 的相关文章

随机推荐