MobileButton.xaml 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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:material="clr-namespace:XF.Material.Forms.UI;assembly=XF.Material"
  5. xmlns:local="clr-namespace:InABox.Mobile"
  6. x:Class="InABox.Mobile.MobileButton">
  7. <ContentView.Resources>
  8. <local:StringToBooleanConverter x:Key="StringToBooleanConverter"/>
  9. <local:ImageSourceToBooleanConverter x:Key="ImageSourceToBooleanConverter"/>
  10. <local:MobileButtonTextFormatter x:Key="MobileButtonTextFormatter" x:Name="_textformatter"/>
  11. <local:MobileButtonSizeConverter x:Key="HeightConverter" Dimension="Height" />
  12. <local:MobileButtonSizeConverter x:Key="WidthConverter" Dimension="Width" />
  13. </ContentView.Resources>
  14. <ContentView.ControlTemplate>
  15. <ControlTemplate>
  16. <local:MobileCard
  17. x:Name="_frame"
  18. IsEnabled="True"
  19. BackgroundColor="{TemplateBinding BackgroundColor}"
  20. BorderColor="{TemplateBinding BorderColor}"
  21. Clicked="_frame_OnClicked"
  22. IsClippedToBounds="True"
  23. HeightRequest="100">
  24. <local:MobileCard.Triggers>
  25. <DataTrigger TargetType="local:MobileCard" Binding="{TemplateBinding IsEnabled}" Value="False">
  26. <Setter Property="BackgroundColor" Value="Silver" />
  27. </DataTrigger>
  28. <DataTrigger TargetType="local:MobileCard" Binding="{TemplateBinding IsEnabled}" Value="False">
  29. <Setter Property="BorderColor" Value="Gray" />
  30. </DataTrigger>
  31. </local:MobileCard.Triggers>
  32. <Grid>
  33. <Grid
  34. Grid.Row="0"
  35. Grid.Column="0"
  36. Padding = "{TemplateBinding Padding}">
  37. <StackLayout
  38. x:Name="_layout"
  39. Grid.Row="0"
  40. Grid.Column="0"
  41. Orientation="{TemplateBinding Orientation}"
  42. HorizontalOptions = "CenterAndExpand"
  43. VerticalOptions = "CenterAndExpand">
  44. <Image
  45. x:Name="_image"
  46. Source="{TemplateBinding Image}"
  47. IsVisible="{TemplateBinding Image, Converter={StaticResource ImageSourceToBooleanConverter}}"
  48. WidthRequest="{TemplateBinding ImageSize, Converter={StaticResource WidthConverter}}"
  49. HeightRequest="{TemplateBinding ImageSize, Converter={StaticResource HeightConverter}}"
  50. Aspect="AspectFit"
  51. />
  52. <material:MaterialLabel
  53. x:Name="_label"
  54. Text="{TemplateBinding Text, Converter={StaticResource MobileButtonTextFormatter}}"
  55. VerticalOptions="CenterAndExpand"
  56. HorizontalOptions="FillAndExpand"
  57. TypeScale = "{TemplateBinding TypeScale}"
  58. HorizontalTextAlignment = "Center"
  59. TextColor="{TemplateBinding TextColor}"
  60. IsVisible="{TemplateBinding Text, Converter={StaticResource StringToBooleanConverter}}"
  61. LineHeight="1"
  62. >
  63. <material:MaterialLabel.Triggers>
  64. <DataTrigger TargetType="material:MaterialLabel" Binding="{TemplateBinding IsEnabled}" Value="False">
  65. <Setter Property="TextColor" Value="Gray" />
  66. </DataTrigger>
  67. </material:MaterialLabel.Triggers>
  68. </material:MaterialLabel>
  69. </StackLayout>
  70. </Grid>
  71. <Frame
  72. Grid.Row="0"
  73. Grid.Column="0"
  74. HorizontalOptions="End"
  75. VerticalOptions="Start"
  76. HeightRequest="20"
  77. WidthRequest="20"
  78. CornerRadius="15"
  79. IsVisible="{TemplateBinding Alert, Converter={StaticResource StringToBooleanConverter}}"
  80. HasShadow="False"
  81. Margin="0,2,2,0"
  82. BackgroundColor="Yellow" Padding="1">
  83. <Label
  84. FontAttributes="Bold"
  85. TextColor="Red"
  86. FontSize="Micro"
  87. HorizontalOptions="Center"
  88. VerticalOptions="Center"
  89. Text="{TemplateBinding Alert}"/>
  90. </Frame>
  91. </Grid>
  92. </local:MobileCard>
  93. </ControlTemplate>
  94. </ContentView.ControlTemplate>
  95. </ContentView>