在MAUI中有没有办法为XAML视图定义全局using指令?

ruyhziif  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(150)

例如,在Blazor中,您可以在_Imports.razor文件中定义using指令,它们将由应用程序的每个组件导入。我想知道MAUI中是否有等效的XAML代码,以便您只需编写一次xlmns标记,例如:

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

字符串
也许有一个BaseView类,让每个视图继承它?

zd287kbt

zd287kbt1#

XAML是在编译时自动生成代码的标记,因此不可继承。
但是您可以使用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。

相关问题