AvaloniaModuleList.axaml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <UserControl xmlns="https://github.com/avaloniaui"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5. xmlns:converters="clr-namespace:InABox.Avalonia.Converters;assembly=InABox.Avalonia"
  6. xmlns:components="clr-namespace:InABox.Avalonia.Components"
  7. mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
  8. x:Class="InABox.Avalonia.Components.AvaloniaModuleList"
  9. x:DataType="components:AvaloniaModuleList">
  10. <UserControl.Resources>
  11. <converters:StringToColorConverter
  12. x:Key="ModuleAlertBackgroundConverter"
  13. Color="{StaticResource PrsAlertBackground}"
  14. Empty="{StaticResource PrsTileBackground}" />
  15. <converters:DoubleToCornerRadiusConverter
  16. x:Key="SphericalBorder"
  17. Ratio="0.5" />
  18. <converters:DoubleToThicknessConverter
  19. x:Key="MarginInverter"
  20. Ratio="-1.0" />
  21. <converters:DoubleToThicknessConverter
  22. x:Key="MarginDoubler"
  23. Ratio="2.0" />
  24. <DataTemplate
  25. x:Key="ModuleList"
  26. x:DataType="components:AvaloniaModule">
  27. <Button Classes="Standard"
  28. Height="80"
  29. Padding="0"
  30. Background="{Binding Alert, Converter={StaticResource ModuleAlertBackgroundConverter}}"
  31. BorderBrush="{StaticResource PrsTileBorder}"
  32. Foreground="{StaticResource PrsTileForeground}"
  33. HorizontalContentAlignment="Stretch"
  34. VerticalContentAlignment="Stretch"
  35. IsEnabled="{Binding IsEnabled}"
  36. Command="{Binding TapCommand}">
  37. <Grid>
  38. <Grid.RowDefinitions>
  39. <RowDefinition Height="*" />
  40. <RowDefinition Height="1.2*" />
  41. </Grid.RowDefinitions>
  42. <Grid.ColumnDefinitions>
  43. <ColumnDefinition Width="70" />
  44. <ColumnDefinition Width="*" />
  45. </Grid.ColumnDefinitions>
  46. <Image
  47. Classes="Large"
  48. Grid.Row="0"
  49. Grid.Column="0"
  50. Grid.RowSpan="2"
  51. Source="{Binding Image}"
  52. HorizontalAlignment="Center"
  53. VerticalAlignment="Center" />
  54. <Label
  55. Grid.Row="0"
  56. Grid.Column="1"
  57. VerticalAlignment="Stretch"
  58. VerticalContentAlignment="Center"
  59. FontSize="{StaticResource PrsFontSizeLarge}"
  60. FontWeight="{StaticResource PrsFontWeightBold}"
  61. Content="{Binding Title}" />
  62. <TextBlock
  63. Grid.Row="1"
  64. Grid.Column="1"
  65. FontSize="{StaticResource PrsFontSizeNormal}"
  66. FontStyle="{StaticResource PrsFontStylItalic}"
  67. TextWrapping="WrapWithOverflow"
  68. VerticalAlignment="Stretch"
  69. Text="{Binding Description}" />
  70. <Border
  71. Background="{StaticResource PrsTileBackground}"
  72. BorderBrush="{StaticResource PrsTileBorder}"
  73. Grid.Row="0"
  74. Grid.RowSpan="2"
  75. Grid.Column="1"
  76. VerticalAlignment="Top"
  77. HorizontalAlignment="Right"
  78. Margin="{Binding Converter={StaticResource MarginDoubler}, ConverterParameter={StaticResource PrsControlSpacing}}"
  79. IsVisible="{Binding Alert, Converter={StaticResource StringToBooleanConverter}}"
  80. MinWidth="{Binding $self.Bounds.Height}"
  81. CornerRadius="{Binding $self.Bounds.Height, Converter={StaticResource SphericalBorder}}">
  82. <Label
  83. Background="Transparent"
  84. Foreground="{StaticResource PrsTileForeground}"
  85. HorizontalContentAlignment="Center"
  86. Content="{Binding Alert}" />
  87. </Border>
  88. </Grid>
  89. </Button>
  90. </DataTemplate>
  91. </UserControl.Resources>
  92. <ItemsControl
  93. DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType = components:AvaloniaModuleList}}"
  94. ItemsSource="{Binding Modules.VisibleItems}"
  95. ItemTemplate="{StaticResource ModuleList}"
  96. Margin="{Binding Converter={StaticResource MarginInverter}, ConverterParameter={StaticResource PrsControlSpacing}}" />
  97. </UserControl>