弹出窗口的 XAML 模板

问题描述 投票:0回答:1

我是 C# Maui 新手,并陷入了一个简单的任务,但我找不到任何如何执行该任务的信息。

我的目标是创建一个 XAML 模板,然后我可以用其他 XAML 内容填充该模板。

我的想法是有这样的东西作为新模板

<HorizontalStackLayout x:Class="MyTemplate">
    <Label Text="template header" />
    <!--new content here-->
    <Label Text="template footer" />
</HorizontalStackLayout>

所以后来我这样使用它:

<MyTemplate>
    <Label Text="content" />
</MyTemplate>

然后应该创建与以下相同的输出:

<HorizontalStackLayout>
    <Label Text="template header" />
    <Label Text="content" />
    <Label Text="template footer" />
</HorizontalStackLayout>

显然我不想只添加一个标签,而是想添加尽可能多的东西。就我而言,我想使用它来为页面创建一个模板,所有页面的上下都应该具有相同的内容。

我尝试过这样的:

<?xml version="1.0" encoding="utf-8" ?>
<mct:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:mct="clr-namespace:CommunityToolkit.Maui.Views;assembly=CommunityToolkit.Maui"
             x:Class="Page.EntryPopup">
    <ContentView>
        <ContentView.ControlTemplate>
            <ControlTemplate>
                <VerticalStackLayout>
                    <Label 
                        Text="Header"
                        VerticalOptions="Center" 
                        HorizontalOptions="Center" />
                    <ContentPresenter />
                    <Label 
                        Text="Footer"
                        VerticalOptions="Center" 
                        HorizontalOptions="Center" />
                </VerticalStackLayout>
            </ControlTemplate>
        </ContentView.ControlTemplate>
    </ContentView>
</mct:Popup>

然后:

<page:EntryPopup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:mct="clr-namespace:CommunityToolkit.Maui.Views;assembly=CommunityToolkit.Maui"
             xmlns:page="clr-namespace:View.Page"
             x:Class="Page.ActivityPopup">
    <VerticalStackLayout>
        <Label 
            Text="Welcome to .NET MAUI!"
            VerticalOptions="Center" 
            HorizontalOptions="Center" />
    </VerticalStackLayout>
</page:EntryPopup>

但这仅显示“欢迎来到 .NET MAUI!”但不是页眉和页脚。

xaml templates maui
1个回答
0
投票

ControlTemplate 应适用于您要使用的弹出窗口。您可以在Resources中定义自定义的

ControlTemplate
,然后在Popup中使用它,

<mct:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
        ...
        >

    <ContentView ControlTemplate="{StaticResource myTemplate}">
        <VerticalStackLayout>
            <Label 
                Text="Welcome to .NET MAUI!"
                VerticalOptions="Center" 
                HorizontalOptions="Center" />
        </VerticalStackLayout>          
    </ContentView>
</mct:Popup>

更多信息请参考控件模板资源词典

© www.soinside.com 2019 - 2024. All rights reserved.