PropertyGridTemplateSelector.axaml 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <ResourceDictionary x:Class="SukiUI.Controls.PropertyGridTemplateSelector"
  2. xmlns="https://github.com/avaloniaui"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:controls="clr-namespace:SukiUI.Controls;assembly=SukiUI">
  5. <controls:DateTimePickerSelectedDateConverter x:Key="DateTimePickerSelectedDateConverter" />
  6. <DataTemplate x:Key="CategoryViewModel" DataType="controls:CategoryViewModel">
  7. <Expander Padding="10,20,10,20" Margin="0,0,0,10" Grid.IsSharedSizeScope="True"
  8. Header="{Binding DisplayName}"
  9. IsExpanded="True">
  10. <ItemsControl Margin="7,0,0,20" ItemsSource="{Binding Properties}" />
  11. </Expander>
  12. </DataTemplate>
  13. <DataTemplate x:Key="StringViewModel" DataType="controls:StringViewModel">
  14. <Grid Classes="Row">
  15. <Grid.ColumnDefinitions>
  16. <ColumnDefinition Width="Auto" SharedSizeGroup="PropertyGridDisplyColumn" />
  17. <ColumnDefinition Width="4" />
  18. <ColumnDefinition Width="*" />
  19. </Grid.ColumnDefinitions>
  20. <TextBlock Classes="Label" />
  21. <TextBox Grid.Column="2"
  22. HorizontalAlignment="Right" MinWidth="120"
  23. VerticalAlignment="Center"
  24. HorizontalContentAlignment="Right"
  25. IsReadOnly="{Binding IsReadOnly}"
  26. Text="{Binding Value}" />
  27. </Grid>
  28. </DataTemplate>
  29. <DataTemplate x:Key="DateTimeOffsetViewModel" DataType="controls:DateTimeOffsetViewModel">
  30. <Grid Classes="Row">
  31. <Grid.ColumnDefinitions>
  32. <ColumnDefinition Width="Auto" SharedSizeGroup="PropertyGridDisplyColumn" />
  33. <ColumnDefinition Width="4" />
  34. <ColumnDefinition Width="*" />
  35. </Grid.ColumnDefinitions>
  36. <TextBlock Classes="Label" />
  37. <DatePicker Grid.Column="2" Width="175"
  38. Margin="-6,0" Height="36"
  39. HorizontalAlignment="Right"
  40. VerticalAlignment="Stretch"
  41. IsEnabled="{Binding !IsReadOnly}"
  42. SelectedDate="{Binding Value, Converter={StaticResource DateTimePickerSelectedDateConverter}}" />
  43. </Grid>
  44. </DataTemplate>
  45. <DataTemplate x:Key="DateTimeViewModel" DataType="controls:DateTimeViewModel">
  46. <Grid Classes="Row">
  47. <Grid.ColumnDefinitions>
  48. <ColumnDefinition Width="Auto" SharedSizeGroup="PropertyGridDisplyColumn" />
  49. <ColumnDefinition Width="4" />
  50. <ColumnDefinition Width="*" />
  51. </Grid.ColumnDefinitions>
  52. <TextBlock Classes="Label" />
  53. <DatePicker Grid.Column="2"
  54. Margin="-6,0" Height="36"
  55. HorizontalAlignment="Right" Width="175"
  56. VerticalAlignment="Stretch"
  57. IsEnabled="{Binding !IsReadOnly}"
  58. SelectedDate="{Binding Value, Converter={StaticResource DateTimePickerSelectedDateConverter}}" />
  59. </Grid>
  60. </DataTemplate>
  61. <DataTemplate x:Key="IntegerViewModel" DataType="controls:IntegerViewModel">
  62. <Grid Classes="Row">
  63. <Grid.ColumnDefinitions>
  64. <ColumnDefinition Width="Auto" SharedSizeGroup="PropertyGridDisplyColumn" />
  65. <ColumnDefinition Width="4" />
  66. <ColumnDefinition Width="*" />
  67. </Grid.ColumnDefinitions>
  68. <TextBlock Classes="Label" />
  69. <NumericUpDown Classes="NumberSelector" Increment="1" />
  70. </Grid>
  71. </DataTemplate>
  72. <DataTemplate x:Key="DoubleViewModel" DataType="controls:DoubleViewModel">
  73. <Grid Classes="Row">
  74. <Grid.ColumnDefinitions>
  75. <ColumnDefinition Width="Auto" SharedSizeGroup="PropertyGridDisplyColumn" />
  76. <ColumnDefinition Width="4" />
  77. <ColumnDefinition Width="*" />
  78. </Grid.ColumnDefinitions>
  79. <TextBlock Classes="Label" />
  80. <NumericUpDown Classes="NumberSelector" Increment="0.001" />
  81. </Grid>
  82. </DataTemplate>
  83. <DataTemplate x:Key="BoolViewModel" DataType="controls:BoolViewModel">
  84. <Grid Classes="Row">
  85. <Grid.ColumnDefinitions>
  86. <ColumnDefinition Width="Auto" SharedSizeGroup="PropertyGridDisplyColumn" />
  87. <ColumnDefinition Width="4" />
  88. <ColumnDefinition Width="*" />
  89. </Grid.ColumnDefinitions>
  90. <TextBlock Classes="Label" />
  91. <ToggleSwitch Grid.Column="2"
  92. Margin="-2,0"
  93. VerticalAlignment="Stretch"
  94. HorizontalContentAlignment="Right" HorizontalAlignment="Right"
  95. IsChecked="{Binding Value}"
  96. IsEnabled="{Binding !IsReadOnly}" />
  97. </Grid>
  98. </DataTemplate>
  99. <DataTemplate x:Key="DecimalViewModel" DataType="controls:DecimalViewModel">
  100. <Grid Classes="Row">
  101. <Grid.ColumnDefinitions>
  102. <ColumnDefinition Width="Auto" SharedSizeGroup="PropertyGridDisplyColumn" />
  103. <ColumnDefinition Width="4" />
  104. <ColumnDefinition Width="*" />
  105. </Grid.ColumnDefinitions>
  106. <TextBlock Classes="Label" />
  107. <NumericUpDown Classes="NumberSelector" Increment="0.001" />
  108. </Grid>
  109. </DataTemplate>
  110. <DataTemplate x:Key="FloatViewModel" DataType="controls:FloatViewModel">
  111. <Grid Classes="Row">
  112. <Grid.ColumnDefinitions>
  113. <ColumnDefinition Width="Auto" SharedSizeGroup="PropertyGridDisplyColumn" />
  114. <ColumnDefinition Width="4" />
  115. <ColumnDefinition Width="*" />
  116. </Grid.ColumnDefinitions>
  117. <TextBlock Classes="Label" />
  118. <NumericUpDown Classes="NumberSelector" Increment="0.001" />
  119. </Grid>
  120. </DataTemplate>
  121. <DataTemplate x:Key="LongViewModel" DataType="controls:LongViewModel">
  122. <Grid Classes="Row">
  123. <Grid.ColumnDefinitions>
  124. <ColumnDefinition Width="Auto" SharedSizeGroup="PropertyGridDisplyColumn" />
  125. <ColumnDefinition Width="4" />
  126. <ColumnDefinition Width="*" />
  127. </Grid.ColumnDefinitions>
  128. <TextBlock Classes="Label" />
  129. <NumericUpDown Classes="NumberSelector" Increment="1" />
  130. </Grid>
  131. </DataTemplate>
  132. <DataTemplate x:Key="ComplexTypeViewModel" DataType="controls:ComplexTypeViewModel">
  133. <Grid Classes="Row">
  134. <Grid.ColumnDefinitions>
  135. <ColumnDefinition Width="Auto" SharedSizeGroup="PropertyGridDisplyColumn" />
  136. <ColumnDefinition Width="4" />
  137. <ColumnDefinition Width="*" />
  138. </Grid.ColumnDefinitions>
  139. <TextBlock Classes="Label" />
  140. <Button Grid.Column="2"
  141. HorizontalAlignment="Right"
  142. Height="36" Margin="4,0"
  143. Click="OnMoreInfoClick">
  144. <TextBlock Text="More Info" />
  145. </Button>
  146. </Grid>
  147. </DataTemplate>
  148. <DataTemplate x:Key="EnumViewModel" DataType="controls:EnumViewModel">
  149. <Grid Classes="Row">
  150. <Grid.ColumnDefinitions>
  151. <ColumnDefinition Width="Auto" SharedSizeGroup="PropertyGridDisplyColumn" />
  152. <ColumnDefinition Width="4" />
  153. <ColumnDefinition Width="*" />
  154. </Grid.ColumnDefinitions>
  155. <TextBlock Classes="Label" />
  156. <ComboBox Grid.Column="2"
  157. HorizontalAlignment="Right" MinWidth="120"
  158. VerticalAlignment="Stretch"
  159. HorizontalContentAlignment="Center"
  160. IsEnabled="{Binding !IsReadOnly}"
  161. ItemsSource="{Binding Values}"
  162. SelectedItem="{Binding Value}" />
  163. </Grid>
  164. </DataTemplate>
  165. </ResourceDictionary>