我正在尝试创建一个 ContentView,并在其中将子项作为 XAML 或(另一个内容视图)传递。我怎样才能做到这一点?
例如: 我有一种观点是 Header.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:strings="clr-namespace:Eurynote.Localization.Resources.en;assembly=Eurynote.Localization"
x:Class="Eurynote.Core.Views.Common.EurynoteHeader">
<HorizontalStackLayout Spacing="10" VerticalOptions="Center">
<Image Source="brand_icon" WidthRequest="32" HeightRequest="30" />
<Label Text="Header" Margin="0,-3,0,0" />
</HorizontalStackLayout>
</ContentView>
现在,在我的 MainPage.xaml 文件中,我可以将此视图称为
<common:Header />
并且运行良好。
但是我如何将另一个控件传递到与子项相同的内容视图,例如按钮、标签等...或任何其他 ContentView,如下面两个示例所示。
<common:Header>
<Button Text="Button" />
</common:Header>
<common:Header>
<common:AnotherView />
</common:Header>
我想确保只能传递单个内容,如Frame。
谢谢你!!!
首先,如果使用以下代码,ContentView的内容将被Button覆盖。
<common:Header>
<Button Text="Button" />
</common:Header>
因此您无法从 xaml 中为 contentview 添加子项。但你可以在后面的代码中做到这一点。如:
在xaml中:
<common:Header x:Name = "header">
在页面的构造函数中:
public partial class MainPage()
{
InitializeComponent();
var layout = head.Content as HorizontalStackLayout;
layout.Children.Add(new Button(){ Text = "new button"});
}
您可以通过这种方式将新项目作为子项添加到内容视图中。