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;
}