Как уже упоминалось в комментарии, вы можете использовать Rg.Plugins.Popup , чтобы удовлетворить ваши требования.Я пишу простой код, и вы можете взглянуть на:
Страница меню действий, она наследует PopupPage
, я использую listView, чтобы показать варианты, и вы можете настроить viewCell
, чтобы добавить изображение направая сторона.Также обработайте событие click в ListView_ItemSelected
:
public partial class Page1 : PopupPage
{
public Page1 ()
{
InitializeComponent ();
listView.ItemsSource = new List<string>
{
"first",
"second",
"third",
"fourth",
"fifth",
};
}
private async void OnClose(object sender, EventArgs e)
{
await PopupNavigation.Instance.PopAsync();
}
private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
//
var index = (listView.ItemsSource as List<string>).IndexOf(e.SelectedItem as string);
Console.WriteLine(index);
}
}
И в Xaml:
<StackLayout VerticalOptions="End" HorizontalOptions="FillAndExpand" Padding="20, 20, 20, 20" >
<Frame CornerRadius="25" Padding="0" Margin="0,0,0,0" BorderColor="Red" HasShadow="False" IsClippedToBounds="True">
<StackLayout BackgroundColor="White" VerticalOptions="End" >
<ListView x:Name="listView" HeightRequest="250" RowHeight="50" ItemSelected="ListView_ItemSelected">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell TextColor="Black" Text="{Binding .}"></TextCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</Frame>
<Frame CornerRadius="25" Padding="0" BackgroundColor="White" IsClippedToBounds="True">
<StackLayout BackgroundColor="White" VerticalOptions="End" HeightRequest="50">
<Button Text="Close" TextColor="#A9D1DE" Clicked="OnClose"></Button>
</StackLayout>
</Frame>
</StackLayout>
Для использования этой страницы:
await PopupNavigation.Instance.PushAsync(new Page1());
Вы должны изменить данные в соответствии с вашими требованиями.Например, пользовательский viewCell
, отключение возможности прокрутки ListView
и т. Д.
Вот как это выглядит в iOS: