diff --git a/samples/ControlCatalog/Pages/DataGridPage.xaml b/samples/ControlCatalog/Pages/DataGridPage.xaml index fb097da71b..12574d4e48 100644 --- a/samples/ControlCatalog/Pages/DataGridPage.xaml +++ b/samples/ControlCatalog/Pages/DataGridPage.xaml @@ -12,9 +12,9 @@ - - - + + + @@ -39,29 +39,28 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -74,20 +73,20 @@ - - - - - - - - + + + + + + + + + + + + + + diff --git a/src/Avalonia.Controls.DataGrid/Avalonia.Controls.DataGrid.csproj b/src/Avalonia.Controls.DataGrid/Avalonia.Controls.DataGrid.csproj index 6556ce721e..57d6c1bad9 100644 --- a/src/Avalonia.Controls.DataGrid/Avalonia.Controls.DataGrid.csproj +++ b/src/Avalonia.Controls.DataGrid/Avalonia.Controls.DataGrid.csproj @@ -21,4 +21,19 @@ + + + + DataGridRowHeaderTheme.axaml + Code + + + DataGridRowGroupExpanderButtonTheme.axaml + Code + + + DataGridRowGroupHeaderTheme.axaml + Code + + diff --git a/src/Avalonia.Controls.DataGrid/DataGrid.cs b/src/Avalonia.Controls.DataGrid/DataGrid.cs index 7ade9f2437..dededc105b 100644 --- a/src/Avalonia.Controls.DataGrid/DataGrid.cs +++ b/src/Avalonia.Controls.DataGrid/DataGrid.cs @@ -25,6 +25,7 @@ using System.ComponentModel.DataAnnotations; using Avalonia.Controls.Utils; using Avalonia.Layout; using Avalonia.Controls.Metadata; +using Avalonia.Controls.Themes; using Avalonia.Input.GestureRecognizers; using Avalonia.Styling; using Avalonia.Reactive; @@ -1405,6 +1406,8 @@ namespace Avalonia.Controls get { return _selectedItems as IList; } } + protected override ControlTheme ControlThemeOverride => DataGridTheme.Instance; + internal DataGridColumnCollection ColumnsInternal { get; diff --git a/src/Avalonia.Controls.DataGrid/DataGridCell.cs b/src/Avalonia.Controls.DataGrid/DataGridCell.cs index 599bea056b..e6d272c4f6 100644 --- a/src/Avalonia.Controls.DataGrid/DataGridCell.cs +++ b/src/Avalonia.Controls.DataGrid/DataGridCell.cs @@ -6,7 +6,10 @@ using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; using Avalonia.Controls.Shapes; +using Avalonia.Controls.Themes; using Avalonia.Input; +using Avalonia.Media; +using Avalonia.Styling; namespace Avalonia.Controls { @@ -35,6 +38,7 @@ namespace Avalonia.Controls (x,e) => x.DataGridCell_PointerPressed(e), handledEventsToo: true); FocusableProperty.OverrideDefaultValue(true); IsTabStopProperty.OverrideDefaultValue(false); + BackgroundProperty.OverrideDefaultValue(Brushes.Transparent); } public DataGridCell() { } @@ -45,6 +49,8 @@ namespace Avalonia.Controls internal set { SetAndRaise(IsValidProperty, ref _isValid, value); } } + protected override ControlTheme ControlThemeOverride => DataGridCellTheme.Instance; + internal DataGridColumn OwningColumn { get => _owningColumn; diff --git a/src/Avalonia.Controls.DataGrid/DataGridColumnHeader.cs b/src/Avalonia.Controls.DataGrid/DataGridColumnHeader.cs index 0755864c25..792927a9bc 100644 --- a/src/Avalonia.Controls.DataGrid/DataGridColumnHeader.cs +++ b/src/Avalonia.Controls.DataGrid/DataGridColumnHeader.cs @@ -15,6 +15,8 @@ using System; using Avalonia.Controls.Utils; using Avalonia.Controls.Mixins; using Avalonia.Controls.Metadata; +using Avalonia.Controls.Themes; +using Avalonia.Styling; namespace Avalonia.Controls { @@ -104,6 +106,8 @@ namespace Avalonia.Controls } } + protected override ControlTheme ControlThemeOverride => DataGridColumnHeaderTheme.Instance; + internal DataGridColumn OwningColumn { get; diff --git a/src/Avalonia.Controls.DataGrid/DataGridRow.cs b/src/Avalonia.Controls.DataGrid/DataGridRow.cs index dfda7d6e4f..ca3266224c 100644 --- a/src/Avalonia.Controls.DataGrid/DataGridRow.cs +++ b/src/Avalonia.Controls.DataGrid/DataGridRow.cs @@ -15,7 +15,9 @@ using Avalonia.Utilities; using Avalonia.VisualTree; using System; using System.Diagnostics; +using Avalonia.Controls.Themes; using Avalonia.Reactive; +using Avalonia.Styling; namespace Avalonia.Controls { @@ -129,6 +131,7 @@ namespace Avalonia.Controls AreDetailsVisibleProperty.Changed.AddClassHandler((x, e) => x.OnAreDetailsVisibleChanged(e)); PointerPressedEvent.AddClassHandler((x, e) => x.DataGridRow_PointerPressed(e), handledEventsToo: true); IsTabStopProperty.OverrideDefaultValue(false); + BackgroundProperty.OverrideDefaultValue(Brushes.Transparent); } /// @@ -208,6 +211,8 @@ namespace Avalonia.Controls } } + protected override ControlTheme ControlThemeOverride => DataGridRowTheme.Instance; + internal DataGrid OwningGrid { get; diff --git a/src/Avalonia.Controls.DataGrid/DataGridRowGroupHeader.cs b/src/Avalonia.Controls.DataGrid/DataGridRowGroupHeader.cs index e51c2526b1..ffcd36c02f 100644 --- a/src/Avalonia.Controls.DataGrid/DataGridRowGroupHeader.cs +++ b/src/Avalonia.Controls.DataGrid/DataGridRowGroupHeader.cs @@ -10,7 +10,9 @@ using Avalonia.Input; using Avalonia.Media; using System; using System.Diagnostics; +using Avalonia.Controls.Themes; using Avalonia.Reactive; +using Avalonia.Styling; namespace Avalonia.Controls { @@ -117,6 +119,8 @@ namespace Avalonia.Controls AddHandler(InputElement.PointerPressedEvent, (s, e) => DataGridRowGroupHeader_PointerPressed(e), handledEventsToo: true); } + protected override ControlTheme ControlThemeOverride => DataGridRowGroupHeaderTheme.Instance; + internal DataGridRowHeader HeaderCell { get diff --git a/src/Avalonia.Controls.DataGrid/DataGridRowHeader.cs b/src/Avalonia.Controls.DataGrid/DataGridRowHeader.cs index c42d21d126..fcfa463310 100644 --- a/src/Avalonia.Controls.DataGrid/DataGridRowHeader.cs +++ b/src/Avalonia.Controls.DataGrid/DataGridRowHeader.cs @@ -7,6 +7,8 @@ using Avalonia.Controls.Metadata; using Avalonia.Input; using Avalonia.Media; using System.Diagnostics; +using Avalonia.Controls.Themes; +using Avalonia.Styling; namespace Avalonia.Controls.Primitives { @@ -49,6 +51,8 @@ namespace Avalonia.Controls.Primitives { AddHandler(PointerPressedEvent, DataGridRowHeader_PointerPressed, handledEventsToo: true); } + + protected override ControlTheme ControlThemeOverride => DataGridRowHeaderTheme.Instance; internal Control Owner { diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridCellTheme.axaml b/src/Avalonia.Controls.DataGrid/Themes/DataGridCellTheme.axaml new file mode 100644 index 0000000000..edd97a9d12 --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridCellTheme.axaml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridCellTheme.axaml.cs b/src/Avalonia.Controls.DataGrid/Themes/DataGridCellTheme.axaml.cs new file mode 100644 index 0000000000..7dfc32200d --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridCellTheme.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using Avalonia.Styling; + +namespace Avalonia.Controls.Themes; + +internal partial class DataGridCellTheme : ControlTheme +{ + public static DataGridCellTheme Instance { get; } = new(); +} + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridColumnHeaderTheme.axaml b/src/Avalonia.Controls.DataGrid/Themes/DataGridColumnHeaderTheme.axaml new file mode 100644 index 0000000000..6e02ce0624 --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridColumnHeaderTheme.axaml @@ -0,0 +1,103 @@ + + + M1875 1011l-787 787v-1798h-128v1798l-787 -787l-90 90l941 941l941 -941z + M1965 947l-941 -941l-941 941l90 90l787 -787v1798h128v-1798l787 787z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridColumnHeaderTheme.axaml.cs b/src/Avalonia.Controls.DataGrid/Themes/DataGridColumnHeaderTheme.axaml.cs new file mode 100644 index 0000000000..473ea8400d --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridColumnHeaderTheme.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using Avalonia.Styling; + +namespace Avalonia.Controls.Themes; + +internal partial class DataGridColumnHeaderTheme : ControlTheme +{ + public static DataGridColumnHeaderTheme Instance { get; } = new(); +} + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridLeftColumnHeaderTheme.axaml b/src/Avalonia.Controls.DataGrid/Themes/DataGridLeftColumnHeaderTheme.axaml new file mode 100644 index 0000000000..675de16956 --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridLeftColumnHeaderTheme.axaml @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridLeftColumnHeaderTheme.axaml.cs b/src/Avalonia.Controls.DataGrid/Themes/DataGridLeftColumnHeaderTheme.axaml.cs new file mode 100644 index 0000000000..16492dca7b --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridLeftColumnHeaderTheme.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using Avalonia.Styling; + +namespace Avalonia.Controls.Themes; + +internal partial class DataGridLeftColumnHeaderTheme : ControlTheme +{ + public static DataGridLeftColumnHeaderTheme Instance { get; } = new(); +} + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupExpanderButtonTheme.axaml b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupExpanderButtonTheme.axaml new file mode 100644 index 0000000000..b1b3a2d355 --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupExpanderButtonTheme.axaml @@ -0,0 +1,28 @@ + + + M515 93l930 931l-930 931l90 90l1022 -1021l-1022 -1021z + M109 486 19 576 1024 1581 2029 576 1939 486 1024 1401z + + + + + + + + + + + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupExpanderButtonTheme.axaml.cs b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupExpanderButtonTheme.axaml.cs new file mode 100644 index 0000000000..a23deb0cf2 --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupExpanderButtonTheme.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using Avalonia.Styling; + +namespace Avalonia.Controls.Themes; + +internal partial class DataGridRowGroupExpanderButtonTheme : ControlTheme +{ + public static DataGridRowGroupExpanderButtonTheme Instance { get; } = new(); +} + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupHeaderTheme.axaml b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupHeaderTheme.axaml new file mode 100644 index 0000000000..f8a135c81d --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupHeaderTheme.axaml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupHeaderTheme.axaml.cs b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupHeaderTheme.axaml.cs new file mode 100644 index 0000000000..82ae5e73a5 --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowGroupHeaderTheme.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using Avalonia.Styling; + +namespace Avalonia.Controls.Themes; + +internal partial class DataGridRowGroupHeaderTheme : ControlTheme +{ + public static DataGridRowGroupHeaderTheme Instance { get; } = new(); +} + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridRowHeaderTheme.axaml b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowHeaderTheme.axaml new file mode 100644 index 0000000000..cc63459880 --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowHeaderTheme.axaml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridRowHeaderTheme.axaml.cs b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowHeaderTheme.axaml.cs new file mode 100644 index 0000000000..65ed7330d5 --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowHeaderTheme.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using Avalonia.Styling; + +namespace Avalonia.Controls.Themes; + +internal partial class DataGridRowHeaderTheme : ControlTheme +{ + public static DataGridRowHeaderTheme Instance { get; } = new(); +} + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridRowTheme.axaml b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowTheme.axaml new file mode 100644 index 0000000000..47f59c2959 --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowTheme.axaml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridRowTheme.axaml.cs b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowTheme.axaml.cs new file mode 100644 index 0000000000..cc0a9a91d4 --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridRowTheme.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using Avalonia.Styling; + +namespace Avalonia.Controls.Themes; + +internal partial class DataGridRowTheme : ControlTheme +{ + public static DataGridRowTheme Instance { get; } = new(); +} + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridTheme.axaml b/src/Avalonia.Controls.DataGrid/Themes/DataGridTheme.axaml new file mode 100644 index 0000000000..2493c3dd0e --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridTheme.axaml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Avalonia.Controls.DataGrid/Themes/DataGridTheme.axaml.cs b/src/Avalonia.Controls.DataGrid/Themes/DataGridTheme.axaml.cs new file mode 100644 index 0000000000..ec2035c3ed --- /dev/null +++ b/src/Avalonia.Controls.DataGrid/Themes/DataGridTheme.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using Avalonia.Styling; + +namespace Avalonia.Controls.Themes; + +internal partial class DataGridTheme : ControlTheme +{ + public static DataGridTheme Instance { get; } = new(); +} + diff --git a/src/Avalonia.Controls.DataGrid/Themes/Fluent.xaml b/src/Avalonia.Controls.DataGrid/Themes/Fluent.xaml index 082eac60be..8138c8a050 100644 --- a/src/Avalonia.Controls.DataGrid/Themes/Fluent.xaml +++ b/src/Avalonia.Controls.DataGrid/Themes/Fluent.xaml @@ -1,5 +1,4 @@ - + @@ -13,7 +12,6 @@ - @@ -32,7 +30,6 @@ - @@ -46,11 +43,6 @@ 0.6 0.8 - M1875 1011l-787 787v-1798h-128v1798l-787 -787l-90 90l941 941l941 -941z - M1965 947l-941 -941l-941 941l90 90l787 -787v1798h128v-1798l787 787z - M515 93l930 931l-930 931l90 90l1022 -1021l-1022 -1021z - M109 486 19 576 1024 1581 2029 576 1939 486 1024 1401z - @@ -75,510 +67,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Avalonia.Controls.DataGrid/Themes/Simple.xaml b/src/Avalonia.Controls.DataGrid/Themes/Simple.xaml index 66160686b6..382ee2e441 100644 --- a/src/Avalonia.Controls.DataGrid/Themes/Simple.xaml +++ b/src/Avalonia.Controls.DataGrid/Themes/Simple.xaml @@ -1,373 +1,67 @@ - + - 4 - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.6 + 0.8 + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +