DataGridStyle.axaml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. <Styles xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  2. <Design.PreviewWith>
  3. <Border Padding="20">
  4. <DataGrid>
  5. <DataGrid.Columns>
  6. <DataGridTextColumn Binding="{Binding Name}" Header="Name" />
  7. <DataGridTemplateColumn Header="Birthday">
  8. <DataGridTemplateColumn.CellTemplate>
  9. <DataTemplate>
  10. <DatePicker BorderThickness="0" />
  11. </DataTemplate>
  12. </DataGridTemplateColumn.CellTemplate>
  13. </DataGridTemplateColumn>
  14. </DataGrid.Columns>
  15. </DataGrid>
  16. </Border>
  17. </Design.PreviewWith>
  18. <Style Selector="DataGridCell">
  19. <Setter Property="Background" Value="Transparent" />
  20. <Setter Property="HorizontalContentAlignment" Value="Stretch" />
  21. <Setter Property="VerticalContentAlignment" Value="Stretch" />
  22. <Setter Property="FontSize" Value="25" />
  23. <Setter Property="Template">
  24. <ControlTemplate>
  25. <Grid Background="{TemplateBinding Background}" ColumnDefinitions="*,Auto">
  26. <ContentPresenter Margin="{TemplateBinding Padding}"
  27. HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
  28. VerticalAlignment="Center"
  29. Content="{TemplateBinding Content}"
  30. ContentTemplate="{TemplateBinding ContentTemplate}"
  31. TextBlock.Foreground="{TemplateBinding Foreground}" />
  32. <Rectangle Name="PART_RightGridLine"
  33. Grid.Column="1"
  34. HorizontalAlignment="Stretch"
  35. VerticalAlignment="Stretch"
  36. Stroke="WhiteSmoke"
  37. StrokeThickness="1" />
  38. </Grid>
  39. </ControlTemplate>
  40. </Setter>
  41. <Style Selector="^ TextBlock">
  42. <Setter Property="TextTrimming" Value="CharacterEllipsis" />
  43. <Setter Property="Margin" Value="5 0 0 0" />
  44. </Style>
  45. <Style Selector="^.CenterAlign">
  46. <Setter Property="HorizontalContentAlignment" Value="Center" />
  47. <Setter Property="HorizontalAlignment" Value="Center" />
  48. </Style>
  49. <Style Selector="^.RightAlign">
  50. <Setter Property="HorizontalContentAlignment" Value="Right" />
  51. <Setter Property="HorizontalAlignment" Value="Right" />
  52. <Setter Property="Margin" Value="0 0 15 0" />
  53. </Style>
  54. </Style>
  55. <Style Selector="DataGridColumnHeader">
  56. <Setter Property="HorizontalContentAlignment" Value="Left" />
  57. <Setter Property="FontWeight" Value="{DynamicResource DefaultDemiBold}" />
  58. <Setter Property="VerticalContentAlignment" Value="Center" />
  59. <Setter Property="SeparatorBrush" Value="{DynamicResource ThemeControlLowColor}" />
  60. <Setter Property="Padding" Value="12" />
  61. <Setter Property="Background" Value="{DynamicResource SukiLightBorderBrush}" />
  62. <Setter Property="Template">
  63. <ControlTemplate>
  64. <Border Name="PART_Border"
  65. Background="Transparent"
  66. BorderBrush="{DynamicResource SukiControlBorderBrush}"
  67. BorderThickness="0,0,0,1.5"
  68. CornerRadius="0">
  69. <Grid ColumnDefinitions="*,Auto">
  70. <Grid Margin="{TemplateBinding Padding}"
  71. HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
  72. VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
  73. ColumnDefinitions="*,Auto">
  74. <ContentPresenter Background="Transparent"
  75. Content="{TemplateBinding Content}"
  76. ContentTemplate="{TemplateBinding ContentTemplate}" />
  77. <Path Name="SortIcon"
  78. Grid.Column="1"
  79. Width="8"
  80. Margin="4,0,0,0"
  81. HorizontalAlignment="Left"
  82. VerticalAlignment="Center"
  83. Data="F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z "
  84. Fill="{DynamicResource SukiText}"
  85. IsVisible="True"
  86. Opacity="0"
  87. Stretch="Uniform" />
  88. </Grid>
  89. </Grid>
  90. </Border>
  91. </ControlTemplate>
  92. </Setter>
  93. <Style Selector="^ TextBlock">
  94. <Setter Property="TextTrimming" Value="CharacterEllipsis" />
  95. </Style>
  96. </Style>
  97. <Style Selector="DataGrid[CanUserResizeColumns=True] DataGridColumnHeader:not(#PART_TopRightCornerHeader) /template/ Border#PART_Border">
  98. <Setter Property="BorderThickness" Value="0,0,1,1.5" />
  99. </Style>
  100. <Style Selector="DataGridColumnHeader:dragIndicator">
  101. <Setter Property="Opacity" Value="0.5" />
  102. </Style>
  103. <Style Selector="DataGridColumnHeader /template/ Path#SortIcon">
  104. <Setter Property="Opacity" Value="0" />
  105. <Setter Property="RenderTransform">
  106. <Setter.Value>
  107. <ScaleTransform ScaleX="0.9" ScaleY="0.9" />
  108. </Setter.Value>
  109. </Setter>
  110. </Style>
  111. <Style Selector="DataGridColumnHeader:sortascending /template/ Path#SortIcon">
  112. <Setter Property="Opacity" Value="1" />
  113. </Style>
  114. <Style Selector="DataGridColumnHeader:sortdescending /template/ Path#SortIcon">
  115. <Setter Property="Opacity" Value="1" />
  116. <Setter Property="RenderTransform">
  117. <Setter.Value>
  118. <ScaleTransform ScaleX="0.9" ScaleY="-0.9" />
  119. </Setter.Value>
  120. </Setter>
  121. </Style>
  122. <Style Selector="DataGridRow">
  123. <Setter Property="Margin" Value="0" />
  124. <Setter Property="Padding" Value="30" />
  125. <Setter Property="Template">
  126. <ControlTemplate>
  127. <DataGridFrozenGrid Name="PART_Root"
  128. ColumnDefinitions="Auto,*"
  129. RowDefinitions="*,Auto,Auto">
  130. <Border Name="BackgroundRectangle"
  131. Grid.RowSpan="2"
  132. Grid.ColumnSpan="2"
  133. Padding="18"
  134. BorderBrush="{DynamicResource SukiBorderBrush}"
  135. BorderThickness="0,0,0,1"
  136. CornerRadius="0" />
  137. <DataGridRowHeader Name="PART_RowHeader"
  138. Grid.Row="0"
  139. Grid.RowSpan="3"
  140. Grid.Column="0"
  141. DataGridFrozenGrid.IsFrozen="True" />
  142. <DataGridCellsPresenter Name="PART_CellsPresenter"
  143. Grid.Row="0"
  144. Grid.Column="1"
  145. Margin="6"
  146. DataGridFrozenGrid.IsFrozen="True" />
  147. <DataGridDetailsPresenter Name="PART_DetailsPresenter"
  148. Grid.Row="1"
  149. Grid.Column="1" />
  150. <Rectangle Name="PART_BottomGridLine"
  151. Grid.Row="2"
  152. Grid.Column="1"
  153. Height="1"
  154. HorizontalAlignment="Stretch" />
  155. </DataGridFrozenGrid>
  156. </ControlTemplate>
  157. </Setter>
  158. </Style>
  159. <Style Selector="DataGridRow:nth-child(even) /template/ Border#BackgroundRectangle">
  160. <Setter Property="Opacity" Value="1" />
  161. <Setter Property="Background" Value="Transparent" />
  162. </Style>
  163. <Style Selector="DataGridRow /template/ Border#BackgroundRectangle">
  164. <Setter Property="Opacity" Value="1" />
  165. <Setter Property="Background" Value="Transparent" />
  166. </Style>
  167. <Style Selector="DataGridRow:pointerover /template/ Border#BackgroundRectangle">
  168. <Setter Property="Background" Value="{DynamicResource SukiPrimaryColor10}" />
  169. </Style>
  170. <Style Selector="DataGridRow:selected /template/ Border#BackgroundRectangle">
  171. <Setter Property="Background" Value="{DynamicResource SukiPrimaryColor15}" />
  172. </Style>
  173. <Style Selector="DataGridRowHeader">
  174. <Setter Property="Focusable" Value="False" />
  175. <Setter Property="Template">
  176. <ControlTemplate>
  177. <Grid x:Name="PART_Root"
  178. ColumnDefinitions="Auto,*"
  179. RowDefinitions="*,*,Auto">
  180. <Border Grid.RowSpan="3"
  181. Grid.ColumnSpan="2"
  182. BorderBrush="{TemplateBinding SeparatorBrush}"
  183. BorderThickness="0,0,1,0">
  184. <Grid Background="{TemplateBinding Background}">
  185. <Rectangle x:Name="RowInvalidVisualElement" Stretch="Fill" />
  186. <Rectangle x:Name="BackgroundRectangle" Stretch="Fill" />
  187. </Grid>
  188. </Border>
  189. <Rectangle x:Name="HorizontalSeparator"
  190. Grid.Row="2"
  191. Grid.Column="0"
  192. Grid.ColumnSpan="2"
  193. Height="1"
  194. Margin="1,0,1,0"
  195. HorizontalAlignment="Stretch"
  196. Fill="Transparent"
  197. IsVisible="{TemplateBinding AreSeparatorsVisible}" />
  198. <ContentPresenter Grid.Row="0"
  199. Grid.RowSpan="2"
  200. Grid.Column="1"
  201. HorizontalAlignment="Center"
  202. VerticalAlignment="Center"
  203. Content="{TemplateBinding Content}" />
  204. </Grid>
  205. </ControlTemplate>
  206. </Setter>
  207. </Style>
  208. <Style Selector="DataGridRowGroupHeader">
  209. <Setter Property="Background" Value="{DynamicResource ThemeControlMidHighBrush}" />
  210. <Setter Property="Height" Value="20" />
  211. <Setter Property="Template">
  212. <ControlTemplate>
  213. <DataGridFrozenGrid Name="Root"
  214. Background="{TemplateBinding Background}"
  215. ColumnDefinitions="Auto,Auto,Auto,Auto"
  216. RowDefinitions="Auto,*,Auto">
  217. <Rectangle Name="IndentSpacer"
  218. Grid.Row="1"
  219. Grid.Column="1" />
  220. <ToggleButton Name="ExpanderButton"
  221. Grid.Row="1"
  222. Grid.Column="2"
  223. Margin="2,0,0,0" />
  224. <StackPanel Grid.Row="1"
  225. Grid.Column="3"
  226. Margin="0,1,0,1"
  227. VerticalAlignment="Center"
  228. Orientation="Horizontal">
  229. <TextBlock Name="PropertyNameElement"
  230. Margin="4,0,0,0"
  231. IsVisible="{TemplateBinding IsPropertyNameVisible}" />
  232. <TextBlock Margin="4,0,0,0" Text="{Binding Key}" />
  233. <TextBlock Name="ItemCountElement"
  234. Margin="4,0,0,0"
  235. IsVisible="{TemplateBinding IsItemCountVisible}" />
  236. </StackPanel>
  237. <DataGridRowHeader Name="RowHeader"
  238. Grid.Row="0"
  239. Grid.RowSpan="3"
  240. Grid.Column="0"
  241. DataGridFrozenGrid.IsFrozen="True" />
  242. </DataGridFrozenGrid>
  243. </ControlTemplate>
  244. </Setter>
  245. </Style>
  246. <Style Selector="DataGridRowGroupHeader /template/ ToggleButton#ExpanderButton">
  247. <Setter Property="Template">
  248. <ControlTemplate>
  249. <Border Width="20"
  250. Height="20"
  251. HorizontalAlignment="Center"
  252. VerticalAlignment="Center"
  253. Background="Transparent">
  254. <Path HorizontalAlignment="Center"
  255. VerticalAlignment="Center"
  256. Data="M 0 2 L 4 6 L 0 10 Z"
  257. Fill="Transparent" />
  258. </Border>
  259. </ControlTemplate>
  260. </Setter>
  261. </Style>
  262. <Style Selector="DataGridRowGroupHeader /template/ ToggleButton#ExpanderButton:checked /template/ Path">
  263. <Setter Property="RenderTransform">
  264. <RotateTransform Angle="90" />
  265. </Setter>
  266. </Style>
  267. <Style Selector="DataGrid">
  268. <Setter Property="RowBackground" Value="Transparent" />
  269. <Setter Property="Background" Value="{DynamicResource SukiBackground}" />
  270. <Setter Property="HeadersVisibility" Value="Column" />
  271. <Setter Property="HorizontalScrollBarVisibility" Value="Auto" />
  272. <Setter Property="VerticalScrollBarVisibility" Value="Auto" />
  273. <Setter Property="SelectionMode" Value="Extended" />
  274. <Setter Property="HorizontalGridLinesBrush" Value="WhiteSmoke" />
  275. <Setter Property="VerticalGridLinesBrush" Value="WhiteSmoke" />
  276. <Setter Property="BorderBrush" Value="Gray" />
  277. <Setter Property="BorderThickness" Value="0" />
  278. <Setter Property="DropLocationIndicatorTemplate">
  279. <Template>
  280. <Rectangle Width="2" Fill="Transparent" />
  281. </Template>
  282. </Setter>
  283. <Setter Property="Template">
  284. <ControlTemplate>
  285. <Border Background="Transparent" BorderThickness="0">
  286. <ScrollViewer Name="PART_ScrollViewer"
  287. HorizontalScrollBarVisibility="{TemplateBinding HorizontalScrollBarVisibility}"
  288. VerticalScrollBarVisibility="{TemplateBinding VerticalScrollBarVisibility}">
  289. <Grid ColumnDefinitions="Auto,*,Auto" RowDefinitions="Auto,*,Auto,Auto">
  290. <DataGridColumnHeader Name="PART_TopLeftCornerHeader"
  291. Grid.Row="0"
  292. Grid.Column="0"
  293. Width="22" />
  294. <DataGridColumnHeadersPresenter Name="PART_ColumnHeadersPresenter"
  295. Grid.Row="0"
  296. Grid.Column="1" />
  297. <DataGridColumnHeader Name="PART_TopRightCornerHeader"
  298. Grid.Row="0"
  299. Grid.Column="2" />
  300. <Rectangle Name="PART_ColumnHeadersAndRowsSeparator"
  301. Grid.Row="0"
  302. Grid.Column="0"
  303. Grid.ColumnSpan="3"
  304. Height="1"
  305. VerticalAlignment="Bottom"
  306. Fill="Transparent"
  307. StrokeThickness="1" />
  308. <DataGridRowsPresenter Name="PART_RowsPresenter"
  309. Grid.Row="1"
  310. Grid.Column="0"
  311. Grid.ColumnSpan="3">
  312. <DataGridRowsPresenter.GestureRecognizers>
  313. <ScrollGestureRecognizer CanHorizontallyScroll="True" CanVerticallyScroll="True" />
  314. </DataGridRowsPresenter.GestureRecognizers>
  315. </DataGridRowsPresenter>
  316. </Grid>
  317. </ScrollViewer>
  318. </Border>
  319. </ControlTemplate>
  320. </Setter>
  321. </Style>
  322. </Styles>