具有自己和给定内容的 ContentView

问题描述

一个应用程序中,我有两个 ContentView 控件,我试图在顶级 ContentPage 中进行组合。第一个 ScaffoldView 包含我希望在整个应用程序中拥有的一些布局元素:

<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             x:Class="App.ScaffoldView">
    <ContentView.Content>
        <Grid
            Margin="10,35,10,10"
            VerticalOptions="FillAndExpand">
            <Grid.RowDeFinitions>...</Grid.RowDeFinitions>
            <!-- Awesome header stuff -->
            <!-- I'd like the below to take given content -->
            <ContentView
                Grid.Row="..."
                Content="{Binding Content}" />
            <!-- Even more awesome footer stuff -->
        </Grid>
    </ContentView.Content>
</ContentView>

第二个 InputsView 只有几对 Label/Entry 元素:

<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             x:Class="App.InputsView">
    <ContentView.Content>
        <Grid>
            <Grid.RowDeFinitions>
                <RowDeFinition Height="Auto" />
                <RowDeFinition Height="Auto" />
                <RowDeFinition Height="Auto" />
            </Grid.RowDeFinitions>
            <Grid.ColumnDeFinitions>
                <ColumnDeFinition Width="Auto" />
                <ColumnDeFinition Width="*" />
            </Grid.ColumnDeFinitions>
            <Label Text="Label1"
                   FontSize="Medium"
                   VerticalTextAlignment="Center"
                   HorizontalTextAlignment="End" />
            <Entry Grid.Column="1"
                   Text="Input1"
                   VerticalOptions="Center" />
            <Label Grid.Row="1"
                   Text="Label2"
                   FontSize="Medium"
                   VerticalTextAlignment="Center"
                   HorizontalTextAlignment="End" />
            <Entry Grid.Row="1"
                   Grid.Column="1"
                   Text="Input2"
                   VerticalOptions="Center" />
            <Label Grid.Row="2"
                   Text="Label3"
                   FontSize="Medium"
                   VerticalTextAlignment="Center"
                   HorizontalTextAlignment="End" />
            <Entry Grid.Row="2"
                   Grid.Column="1"
                   Text="Input3"
                   VerticalOptions="Center" />
        </Grid>
    </ContentView.Content>
</ContentView>

最后是顶级的ContentPage

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:controls="clr-namespace:App"
             x:Class="App.MainPage">
    <controls:ScaffoldView>
        <controls:InputsView />
    </controls:ScaffoldView>
</ContentPage>

目前,所有显示的是 InputsView。我想这只是因为 Content 的整个 MainPage 都被 ScaffoldView 占用了,而 Content 的整个 ScaffoldView 都在 Scaffold.xaml 中定义{1}} 被 <controls:InputsView /> 标签覆盖。

理想情况下,我希望有某种方式将 <controls:InputsView /> 包含在上面的开始和结束 <controls:ScaffoldView> 标签中,并在 ScaffoldView显示此给定内容Scaffold.xaml 中定义的自己的内容

是否可以通过这种方式嵌套/混合 Content,或者我是否需要定义自定义属性,例如ChildContent

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)