From 51188cb36dddc17dc01d62c1ac32acaf87598361 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 --- .../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 +- 8 files changed, 107 insertions(+), 2 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/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 98a4c20..8c2ce37 100644 --- a/samples/SampleApp/MainWindow.axaml +++ b/samples/SampleApp/MainWindow.axaml @@ -68,6 +68,13 @@ + + + + + + + diff --git a/samples/SampleApp/SampleApp.csproj b/samples/SampleApp/SampleApp.csproj index 2f1d9c5..a41e2d8 100644 --- a/samples/SampleApp/SampleApp.csproj +++ b/samples/SampleApp/SampleApp.csproj @@ -16,6 +16,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 c2f60d8..9d0292a 100644 --- a/src/Devolutions.AvaloniaTheme.DevExpress/Devolutions.AvaloniaTheme.DevExpress.csproj +++ b/src/Devolutions.AvaloniaTheme.DevExpress/Devolutions.AvaloniaTheme.DevExpress.csproj @@ -15,6 +15,7 @@ + diff --git a/src/Devolutions.AvaloniaTheme.Linux/Devolutions.AvaloniaTheme.Linux.csproj b/src/Devolutions.AvaloniaTheme.Linux/Devolutions.AvaloniaTheme.Linux.csproj index 2b61abd..b4b32c8 100644 --- a/src/Devolutions.AvaloniaTheme.Linux/Devolutions.AvaloniaTheme.Linux.csproj +++ b/src/Devolutions.AvaloniaTheme.Linux/Devolutions.AvaloniaTheme.Linux.csproj @@ -15,6 +15,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 39427cf..fa77ae3 100644 --- a/src/Devolutions.AvaloniaTheme.DevExpress/Controls/_index.axaml +++ b/src/Devolutions.AvaloniaTheme.DevExpress/Controls/_index.axaml @@ -18,6 +18,7 @@ +