From 182bf8317622da231370fc0f5648d8cbdaf59f87 Mon Sep 17 00:00:00 2001 From: Anna Malchow-Perryman Date: Thu, 8 May 2025 17:23:42 +0100 Subject: [PATCH 1/2] Install TreeDataGrid & add a demo page --- samples/SampleApp/App.axaml | 12 +++- .../DemoPages/TreeDataGridDemo.axaml | 15 ++++ .../DemoPages/TreeDataGridDemo.axaml.cs | 11 +++ samples/SampleApp/MainWindow.axaml | 7 ++ samples/SampleApp/SampleApp.csproj | 1 + .../ViewModels/TreeDataGridViewModel.cs | 68 +++++++++++++++++++ ...evolutions.AvaloniaTheme.DevExpress.csproj | 1 + .../Devolutions.AvaloniaTheme.Linux.csproj | 1 + .../Devolutions.AvaloniaTheme.MacOS.csproj | 5 +- 9 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 samples/SampleApp/DemoPages/TreeDataGridDemo.axaml create mode 100644 samples/SampleApp/DemoPages/TreeDataGridDemo.axaml.cs create mode 100644 samples/SampleApp/ViewModels/TreeDataGridViewModel.cs diff --git a/samples/SampleApp/App.axaml b/samples/SampleApp/App.axaml index 9e45fa9..0414365 100644 --- a/samples/SampleApp/App.axaml +++ b/samples/SampleApp/App.axaml @@ -5,14 +5,20 @@ + + + + + + @@ -20,8 +26,10 @@ - - + + + + \ No newline at end of file diff --git a/samples/SampleApp/DemoPages/TreeDataGridDemo.axaml b/samples/SampleApp/DemoPages/TreeDataGridDemo.axaml new file mode 100644 index 0000000..5dd9b70 --- /dev/null +++ b/samples/SampleApp/DemoPages/TreeDataGridDemo.axaml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/samples/SampleApp/DemoPages/TreeDataGridDemo.axaml.cs b/samples/SampleApp/DemoPages/TreeDataGridDemo.axaml.cs new file mode 100644 index 0000000..7fcc187 --- /dev/null +++ b/samples/SampleApp/DemoPages/TreeDataGridDemo.axaml.cs @@ -0,0 +1,11 @@ +using Avalonia.Controls; + +namespace SampleApp.DemoPages; + +public partial class TreeDataGridDemo : UserControl +{ + public TreeDataGridDemo() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/samples/SampleApp/MainWindow.axaml b/samples/SampleApp/MainWindow.axaml index 3d6c648..e51249d 100644 --- a/samples/SampleApp/MainWindow.axaml +++ b/samples/SampleApp/MainWindow.axaml @@ -65,6 +65,13 @@ + + + + + + + diff --git a/samples/SampleApp/SampleApp.csproj b/samples/SampleApp/SampleApp.csproj index 90b8bd1..a86ede5 100644 --- a/samples/SampleApp/SampleApp.csproj +++ b/samples/SampleApp/SampleApp.csproj @@ -11,6 +11,7 @@ + diff --git a/samples/SampleApp/ViewModels/TreeDataGridViewModel.cs b/samples/SampleApp/ViewModels/TreeDataGridViewModel.cs new file mode 100644 index 0000000..b6c2888 --- /dev/null +++ b/samples/SampleApp/ViewModels/TreeDataGridViewModel.cs @@ -0,0 +1,68 @@ +using System.Collections.ObjectModel; +using Avalonia.Controls; +using Avalonia.Controls.Models.TreeDataGrid; +using CommunityToolkit.Mvvm.ComponentModel; + +namespace SampleApp.ViewModels; + +public class Person +{ + public string? FirstName { get; set; } + public string? LastName { get; set; } + public int Age { get; set; } + public ObservableCollection Children { get; } = new(); +} + +public class TreeDataGridViewModel : ObservableObject +{ + private readonly ObservableCollection _people = new() + { + new Person + { + FirstName = "Eleanor", + LastName = "Pope", + Age = 32, + Children = + { + new Person { FirstName = "Marcel", LastName = "Gutierrez", Age = 4 } + } + }, + new Person + { + FirstName = "Jeremy", + LastName = "Navarro", + Age = 74, + Children = + { + new Person + { + FirstName = "Jane", + LastName = "Navarro", + Age = 42, + Children = + { + new Person { FirstName = "Lailah ", LastName = "Velazquez", Age = 16 } + } + } + } + }, + new Person { FirstName = "Jazmine", LastName = "Schroeder", Age = 52 } + }; + + public TreeDataGridViewModel() + { + Source = new HierarchicalTreeDataGridSource(_people) + { + Columns = + { + new HierarchicalExpanderColumn( + new TextColumn("First Name", x => x.FirstName), + x => x.Children), + new TextColumn("Last Name", x => x.LastName), + new TextColumn("Age", x => x.Age) + } + }; + } + + public HierarchicalTreeDataGridSource Source { get; } +} \ No newline at end of file diff --git a/src/Devolutions.AvaloniaTheme.DevExpress/Devolutions.AvaloniaTheme.DevExpress.csproj b/src/Devolutions.AvaloniaTheme.DevExpress/Devolutions.AvaloniaTheme.DevExpress.csproj index dff1cd3..864a8fa 100644 --- a/src/Devolutions.AvaloniaTheme.DevExpress/Devolutions.AvaloniaTheme.DevExpress.csproj +++ b/src/Devolutions.AvaloniaTheme.DevExpress/Devolutions.AvaloniaTheme.DevExpress.csproj @@ -15,5 +15,6 @@ + \ No newline at end of file diff --git a/src/Devolutions.AvaloniaTheme.Linux/Devolutions.AvaloniaTheme.Linux.csproj b/src/Devolutions.AvaloniaTheme.Linux/Devolutions.AvaloniaTheme.Linux.csproj index 5d4b9be..5352e8d 100644 --- a/src/Devolutions.AvaloniaTheme.Linux/Devolutions.AvaloniaTheme.Linux.csproj +++ b/src/Devolutions.AvaloniaTheme.Linux/Devolutions.AvaloniaTheme.Linux.csproj @@ -15,6 +15,7 @@ + - - - - - @@ -29,7 +23,5 @@ - - \ No newline at end of file diff --git a/src/Devolutions.AvaloniaTheme.DevExpress/Accents/Styles.axaml b/src/Devolutions.AvaloniaTheme.DevExpress/Accents/Styles.axaml index 632f054..06bff48 100644 --- a/src/Devolutions.AvaloniaTheme.DevExpress/Accents/Styles.axaml +++ b/src/Devolutions.AvaloniaTheme.DevExpress/Accents/Styles.axaml @@ -38,4 +38,13 @@ + + + + \ No newline at end of file diff --git a/src/Devolutions.AvaloniaTheme.DevExpress/Controls/TreeDataGrid.axaml b/src/Devolutions.AvaloniaTheme.DevExpress/Controls/TreeDataGrid.axaml new file mode 100644 index 0000000..55021f7 --- /dev/null +++ b/src/Devolutions.AvaloniaTheme.DevExpress/Controls/TreeDataGrid.axaml @@ -0,0 +1,332 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + M1875 1011l-787 787v-1798h-128v1798l-787 -787l-90 90l941 941l941 -941z + M1965 947l-941 -941l-941 941l90 90l787 -787v1798h128v-1798l787 787z + M 1,0 10,10 l -9,10 -1,-1 L 8,10 -0,1 Z + M0,1 L10,10 20,1 19,0 10,8 1,0 Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Devolutions.AvaloniaTheme.DevExpress/Controls/_index.axaml b/src/Devolutions.AvaloniaTheme.DevExpress/Controls/_index.axaml index cc2996d..6821f69 100644 --- a/src/Devolutions.AvaloniaTheme.DevExpress/Controls/_index.axaml +++ b/src/Devolutions.AvaloniaTheme.DevExpress/Controls/_index.axaml @@ -14,6 +14,7 @@ +