例如,在Blazor中,您可以在_Imports.razor文件中定义using指令,它们将由应用程序的每个组件导入。我想知道MAUI中是否有等效的XAML代码,以便您只需编写一次xlmns标记,例如:
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
字符串也许有一个BaseView类,让每个视图继承它?
zd287kbt1#
XAML是在编译时自动生成代码的标记,因此不可继承。但是您可以使用ContentPresenter来实现这一点。ContentPresenter可以放置在控件模板中,以标记模板化的自定义控件或模板化页面显示的内容将出现在何处。使用控件模板的自定义控件或页面将定义ContentPresenter显示的内容。你可以参考以下代码:
ContentPresenter
BasePage.xaml
<?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" x:Class="MauiApp821.BasePage" Title="BasePage"> <ContentPage.ControlTemplate> <ControlTemplate> <VerticalStackLayout HorizontalOptions="Fill" VerticalOptions="Fill"> <Label Text="This is a test" /> <!-- Content from child pages --> <ContentPresenter /> </VerticalStackLayout> </ControlTemplate> </ContentPage.ControlTemplate> </ContentPage>
字符串
TestPage.xaml
<?xml version="1.0" encoding="utf-8" ?> <mauiapp:BasePage xmlns:mauiapp="clr-namespace:MauiApp821" xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MauiApp821.TestPage" > <ContentPage.Content> <VerticalStackLayout BackgroundColor="Purple" Spacing="25" Padding="30,0" VerticalOptions="Center"> <Label Text="this is the content of ChildPage"/> </VerticalStackLayout> </ContentPage.Content> </mauiapp:BasePage>
型
TestPage.xaml.cs
public partial class TestPage: BasePage { public TestPage() { InitializeComponent(); } }
型有关详细信息,请检查将文档替换内容放入ContentPresenter。
1条答案
按热度按时间zd287kbt1#
XAML是在编译时自动生成代码的标记,因此不可继承。
但是您可以使用
ContentPresenter
来实现这一点。ContentPresenter
可以放置在控件模板中,以标记模板化的自定义控件或模板化页面显示的内容将出现在何处。使用控件模板的自定义控件或页面将定义ContentPresenter
显示的内容。你可以参考以下代码:
BasePage.xaml
字符串
TestPage.xaml
型
TestPage.xaml.cs
型
有关详细信息,请检查将文档替换内容放入ContentPresenter。