C# 是否在Shell中动态创建弹出项列表?

C# 是否在Shell中动态创建弹出项列表?,c#,xaml,xamarin,xamarin.forms,xamarin.forms.shell,C#,Xaml,Xamarin,Xamarin.forms,Xamarin.forms.shell,目前我使用的是MasterDetailPage,但我想将我的项目模型更改为Shell 如何像旧版本的MasterDetail那样动态生成弹出项 <StackLayout> <ListView x:Name="MenuItemsListView" SeparatorVisibility="None" HasUnevenRows="true"

目前我使用的是
MasterDetailPage
,但我想将我的项目模型更改为
Shell

如何像旧版本的
MasterDetail
那样动态生成弹出项

<StackLayout>
        <ListView x:Name="MenuItemsListView"
              SeparatorVisibility="None"
              HasUnevenRows="true"
              ItemsSource="{Binding MenuItems}">
            <ListView.Header>
                <Grid BackgroundColor="#8f0000">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="10"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="10"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="30"/>
                        <RowDefinition Height="80"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="10"/>
                    </Grid.RowDefinitions>
                    <Label
                          Grid.Column="1"
                          Grid.Row="2"
                          Text="{Binding Title}"
                          Style="{DynamicResource SubtitleStyle}" 
                          TextColor="#d7d9b4"
                          FontSize="24"/>
                </Grid>
            </ListView.Header>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Padding="15,10" HorizontalOptions="FillAndExpand">
                            <Label VerticalOptions="FillAndExpand" 
                                    VerticalTextAlignment="Center" 
                                    Text="{Binding MenuTitle}" 
                                    d:Text="{Binding .}"
                                    FontSize="20"/> 
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>        
    </StackLayout>

您有动态弹出项的示例吗?

您可以使用,通过使用它,您告诉
Shell
覆盖/替换根据您提供的
AppShell.xaml
层次结构自动生成的弹出内容

我猜您所说的菜单项是指弹出项列表

<Shell Title="Shell Title" ...>

<Shell.FlyoutContentTemplate>
        <DataTemplate>
            <StackLayout>
                <ListView x:Name="MenuItemsListView"
                          SeparatorVisibility="None"
                          HasUnevenRows="true"
                          ItemsSource="{Binding FlyoutItems}">
                    <ListView.Header>
                        <Grid BackgroundColor="#8f0000">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="10"/>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="10"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="30"/>
                                <RowDefinition Height="80"/>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="10"/>
                            </Grid.RowDefinitions>
                            <Label Grid.Row="2" Grid.Column="1"
                                   TextColor="#d7d9b4"
                                   Text="{Binding Title}"
                                   FontSize="24"/>
                        </Grid>
                    </ListView.Header>

                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell>
                                <StackLayout Padding="15,10"
                                             HorizontalOptions="FillAndExpand">
                                    <Label VerticalOptions="FillAndExpand"
                                           VerticalTextAlignment="Center"
                                           Text="{Binding MenuTitle}"
                                           TextColor="Black"
                                           FontSize="20"/>
                                </StackLayout>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </StackLayout>
        </DataTemplate>
    </Shell.FlyoutContentTemplate>

示例代码
publicobservableCollection弹出项{get;set;}
公共AppShell()
{
弹出项=新的ObservableCollection()
{
新建{MenuTitle=“MenuTitle1”},
新建{MenuTitle=“MenuTitle2”},
新建{MenuTitle=“MenuTitle3”},
新建{MenuTitle=“MenuTitle4”}
};
初始化组件();
BindingContext=这个;
}
这只是一个示例,用于展示您的想法,不确定您的数据设计,但最好使用
弹出式ContentTemplate
和项目的
可观察集合
,并将
菜单项模板
用于单独的菜单项列表


它似乎无法直接创建列表视图进行填写,它有单独的列表视图。如果它回答了您的问题或您觉得它有帮助,请告诉我,否则您可能会给我留下反馈/评论。
public ObservableCollection<dynamic> FlyoutItems { get; set; }

public AppShell()
{
            FlyoutItems = new ObservableCollection<dynamic>()
            {
                new {  MenuTitle="MenuTitle1" },
                new {  MenuTitle="MenuTitle2" },
                new {  MenuTitle="MenuTitle3" },
                new {  MenuTitle="MenuTitle4" }
            };
            InitializeComponent();
            BindingContext = this;
}