将XAML插入另一个XAML MAUI

yeotifhr  于 2023-03-16  发布在  其他
关注(0)|答案(1)|浏览(233)

我正在构建一个MAUI应用程序,主页面存储在一个名为MainPage.xaml的文件中。我还使用CommunityToolkit包创建了一个弹出窗口。我想知道是否有一种方法可以在单击按钮时将此PopUpPage包含在我的MainPage中。PopupPage.xaml看起来如下所示:

<toolkit:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Myproject.PopupPage"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             >
    <VerticalStackLayout>
        <Label 
            Text="Welcome to .NET MAUI!"
            VerticalOptions="Center" 
            HorizontalOptions="Center" />
    </VerticalStackLayout>
</toolkit:Popup>

我尝试了这个xaml代码,但它没有编译

<toolkit:Popup x:Name="MyPopup" IsVisible="{Binding IsPickerVisible}">
            <local:PopupPage />    
</toolkit:Popup>
zzzyeukh

zzzyeukh1#

肯定有一种方法可以做到这一点!但是在你的代码中有些东西看起来不正确,阻止了它的工作。让我们后退一步,看看你试图做什么。
PopupPage中,你定义了一个toolkit:Popup,所以一个完整的弹出窗口,这是在你的应用程序中实际显示弹出窗口所需要的。
但是,在第二个代码段中,您现在尝试将PopupPage Package 在另一个弹出窗口中,这是不支持的。
我不知道您要做什么的所有细节,但假设您希望在下面的两个位置重用此部分:

<VerticalStackLayout>
    <Label 
        Text="Welcome to .NET MAUI!"
        VerticalOptions="Center" 
        HorizontalOptions="Center" />
</VerticalStackLayout>

您要做的是只将这一部分放在一个单独的XAML文件中。假设我们将其命名为PopupContent.xaml。作为模板,您可能希望选择ContentView (XAML),但只要它是XAML文件,这并不重要。请确保内容如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<VerticalStackLayout xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Myproject.PopupContent">
    <Label 
        Text="Welcome to .NET MAUI!"
        VerticalOptions="Center" 
        HorizontalOptions="Center" />
</VerticalStackLayout>

不要忘记更新代码隐藏中的基类(专业提示:您甚至可以完全删除继承,因为它已经从XAML中推断出来了)。
现在从您的问题更新XAML代码段,如下所示:

<toolkit:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Myproject.PopupPage"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             xmlns:local="clr-namespace:Myproject">
    <local:PopupContent />
</toolkit:Popup>

注意我是如何将xmlns:local添加到根目录中的,确保它反映了应用的名称空间,然后如果愿意,将<local:PopupContent />作为组件添加。
现在对第二个XAML代码段执行相同的操作,您可以在两者之间共享它!

相关问题