我是 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!”但不是页眉和页脚。
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>