MobileMenuButtonMenu.xaml 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ContentView xmlns="http://xamarin.com/schemas/2014/forms"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  4. xmlns:mobile="clr-namespace:InABox.Mobile;assembly=InABox.Mobile.Shared"
  5. xmlns:views="http://xamarin.com/schemas/2020/toolkit"
  6. x:Class="InABox.Mobile.MobileMenuButtonMenu">
  7. <ContentView.Resources>
  8. <mobile:MobileMenuButtonMenuImagePositionConverter x:Key="ImagePositionConverter" />
  9. <DataTemplate
  10. x:DataType="mobile:MobileMenuItem" x:Key="ItemTemplate">
  11. <views:DockLayout
  12. IsVisible="{Binding IsVisible}"
  13. HorizontalOptions="Fill"
  14. Grid.Row="{Binding Index}">
  15. <Image
  16. views:DockLayout.Dock="{Binding ImagePosition, Source={x:Reference _viewModel}, Converter={StaticResource ImagePositionConverter}}"
  17. Source="{Binding Image}"
  18. IsVisible="{Binding ShowImages, Source={x:Reference _viewModel}}"
  19. Aspect="AspectFit"
  20. HeightRequest="20"
  21. WidthRequest="20"
  22. Margin="2">
  23. <Image.GestureRecognizers>
  24. <TapGestureRecognizer Tapped="TapGestureRecognizer_OnTapped" />
  25. </Image.GestureRecognizers>
  26. </Image>
  27. <Label
  28. views:DockLayout.Dock="Left"
  29. Text="{Binding Text}"
  30. VerticalOptions="CenterAndExpand"
  31. HorizontalOptions="Fill"
  32. HorizontalTextAlignment="Start"
  33. VerticalTextAlignment="Center"
  34. FontSize="Small"
  35. Padding="2,5,2,2"
  36. TextColor="Black">
  37. <Label.GestureRecognizers>
  38. <TapGestureRecognizer Tapped="TapGestureRecognizer_OnTapped" />
  39. </Label.GestureRecognizers>
  40. </Label>
  41. </views:DockLayout>
  42. </DataTemplate>
  43. <DataTemplate x:Key="SeparatorTemplate" x:DataType="mobile:MobileMenuSeparator">
  44. <BoxView
  45. HeightRequest="1"
  46. VerticalOptions="Center"
  47. HorizontalOptions="Fill"
  48. IsVisible="{Binding IsVisible}"
  49. BackgroundColor="Gray"
  50. Grid.Row="{Binding Index}"
  51. Opacity="0.5"
  52. Margin="2,5,2,2"/>
  53. </DataTemplate>
  54. <mobile:MobileMenuButtonTemplateSelector x:Key="ItemTemplateSelector" Item="{StaticResource ItemTemplate}" Separator="{StaticResource SeparatorTemplate}" />
  55. </ContentView.Resources>
  56. <ContentView.BindingContext>
  57. <mobile:MobileMenuButtonMenuViewModel
  58. x:Name="_viewModel"
  59. LayoutChanged="_viewModel_OnLayoutChanged"
  60. ItemClicked="_viewModel_OnItemClicked"/>
  61. </ContentView.BindingContext>
  62. <ContentView.Content>
  63. <Grid
  64. x:Name="_menu"
  65. VerticalOptions="StartAndExpand"
  66. HorizontalOptions="StartAndExpand"
  67. Margin="2,5,-5,-2"
  68. RowSpacing="5"
  69. BindableLayout.ItemsSource = "{Binding VisibleItems}"
  70. BindableLayout.ItemTemplateSelector="{StaticResource ItemTemplateSelector}"
  71. >
  72. <BindableLayout.EmptyView>
  73. <Label
  74. FontSize="Small"
  75. Text="(No Options)"
  76. TextColor="Gray"/>
  77. </BindableLayout.EmptyView>
  78. <Grid.ColumnDefinitions>
  79. <ColumnDefinition Width="Auto"/>
  80. </Grid.ColumnDefinitions>
  81. </Grid>
  82. </ContentView.Content>
  83. </ContentView>