Skip to content

Commit 182bf83

Browse files
committed
Install TreeDataGrid & add a demo page
1 parent 806a0a8 commit 182bf83

File tree

9 files changed

+117
-4
lines changed

9 files changed

+117
-4
lines changed

samples/SampleApp/App.axaml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,31 @@
55
<Styles x:Key="LinuxYaruStyles">
66
<StyleInclude Source="avares://Devolutions.AvaloniaTheme.Linux/LinuxTheme.axaml" />
77
<StyleInclude Source="/Styles.axaml" />
8+
<!-- TODO: move into themes -->
9+
<StyleInclude Source="avares://Avalonia.Controls.TreeDataGrid/Themes/Fluent.axaml" />
810
</Styles>
911
<Styles x:Key="DevExpressStyles">
1012
<StyleInclude Source="avares://Devolutions.AvaloniaTheme.DevExpress/DevExpressTheme.axaml" />
1113
<StyleInclude Source="/Styles.axaml" />
14+
<!-- TODO: move into themes -->
15+
<StyleInclude Source="avares://Avalonia.Controls.TreeDataGrid/Themes/Fluent.axaml" />
1216
</Styles>
1317
<Styles x:Key="MacOsStyles">
1418
<StyleInclude Source="avares://Devolutions.AvaloniaTheme.MacOS/MacOSTheme.axaml" />
1519
<StyleInclude Source="/Styles.axaml" />
20+
<!-- TODO: move into themes -->
21+
<StyleInclude Source="avares://Avalonia.Controls.TreeDataGrid/Themes/Fluent.axaml" />
1622
</Styles>
1723
</Application.Resources>
1824

1925
<!-- KEPT FOR DESIGNER! -->
2026
<Application.Styles>
2127
<!-- <FluentTheme /> -->
2228
<!-- <StyleInclude Source="avares://Devolutions.AvaloniaTheme.MacOS/MacOSTheme.axaml" /> -->
23-
<!-- <StyleInclude Source="avares://Devolutions.AvaloniaTheme.DevExpress/DevExpressTheme.axaml" /> -->
24-
<StyleInclude Source="avares://Devolutions.AvaloniaTheme.Linux/LinuxTheme.axaml" />
29+
<StyleInclude Source="avares://Devolutions.AvaloniaTheme.DevExpress/DevExpressTheme.axaml" />
30+
<!-- <StyleInclude Source="avares://Devolutions.AvaloniaTheme.Linux/LinuxTheme.axaml" /> -->
2531
<StyleInclude Source="/Styles.axaml" />
32+
<!-- TODO: move into themes -->
33+
<StyleInclude Source="avares://Avalonia.Controls.TreeDataGrid/Themes/Fluent.axaml" />
2634
</Application.Styles>
2735
</Application>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<UserControl xmlns="https://github.com/avaloniaui"
2+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:vm="using:SampleApp.ViewModels"
6+
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
7+
x:Class="SampleApp.DemoPages.TreeDataGridDemo"
8+
x:DataType="vm:TreeDataGridViewModel">
9+
10+
<Design.DataContext>
11+
<vm:TreeDataGridViewModel />
12+
</Design.DataContext>
13+
14+
<TreeDataGrid Source="{Binding Source} " />
15+
</UserControl>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using Avalonia.Controls;
2+
3+
namespace SampleApp.DemoPages;
4+
5+
public partial class TreeDataGridDemo : UserControl
6+
{
7+
public TreeDataGridDemo()
8+
{
9+
InitializeComponent();
10+
}
11+
}

samples/SampleApp/MainWindow.axaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@
6565
<TabItem Header="Toggle Switch [WIP]">
6666
<demoPages:ToggleSwitchDemo />
6767
</TabItem>
68+
<TabItem Header="TreeDataGrid" IsSelected="True">
69+
<demoPages:TreeDataGridDemo>
70+
<demoPages:TreeDataGridDemo.DataContext>
71+
<vm:TreeDataGridViewModel />
72+
</demoPages:TreeDataGridDemo.DataContext>
73+
</demoPages:TreeDataGridDemo>
74+
</TabItem>
6875
<TabItem Header="TreeView">
6976
<demoPages:TreeViewDemo />
7077
</TabItem>

samples/SampleApp/SampleApp.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<ItemGroup>
1212
<PackageReference Include="Avalonia" Version="11.2.8"/>
1313
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.2.8"/>
14+
<PackageReference Include="Avalonia.Controls.TreeDataGrid" Version="11.1.1"/>
1415
<PackageReference Include="Avalonia.Desktop" Version="11.2.8"/>
1516
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.2.8"/>
1617
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
using System.Collections.ObjectModel;
2+
using Avalonia.Controls;
3+
using Avalonia.Controls.Models.TreeDataGrid;
4+
using CommunityToolkit.Mvvm.ComponentModel;
5+
6+
namespace SampleApp.ViewModels;
7+
8+
public class Person
9+
{
10+
public string? FirstName { get; set; }
11+
public string? LastName { get; set; }
12+
public int Age { get; set; }
13+
public ObservableCollection<Person> Children { get; } = new();
14+
}
15+
16+
public class TreeDataGridViewModel : ObservableObject
17+
{
18+
private readonly ObservableCollection<Person> _people = new()
19+
{
20+
new Person
21+
{
22+
FirstName = "Eleanor",
23+
LastName = "Pope",
24+
Age = 32,
25+
Children =
26+
{
27+
new Person { FirstName = "Marcel", LastName = "Gutierrez", Age = 4 }
28+
}
29+
},
30+
new Person
31+
{
32+
FirstName = "Jeremy",
33+
LastName = "Navarro",
34+
Age = 74,
35+
Children =
36+
{
37+
new Person
38+
{
39+
FirstName = "Jane",
40+
LastName = "Navarro",
41+
Age = 42,
42+
Children =
43+
{
44+
new Person { FirstName = "Lailah ", LastName = "Velazquez", Age = 16 }
45+
}
46+
}
47+
}
48+
},
49+
new Person { FirstName = "Jazmine", LastName = "Schroeder", Age = 52 }
50+
};
51+
52+
public TreeDataGridViewModel()
53+
{
54+
Source = new HierarchicalTreeDataGridSource<Person>(_people)
55+
{
56+
Columns =
57+
{
58+
new HierarchicalExpanderColumn<Person>(
59+
new TextColumn<Person, string>("First Name", x => x.FirstName),
60+
x => x.Children),
61+
new TextColumn<Person, string>("Last Name", x => x.LastName),
62+
new TextColumn<Person, int>("Age", x => x.Age)
63+
}
64+
};
65+
}
66+
67+
public HierarchicalTreeDataGridSource<Person> Source { get; }
68+
}

src/Devolutions.AvaloniaTheme.DevExpress/Devolutions.AvaloniaTheme.DevExpress.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@
1515
<PackageReference Include="Avalonia" Version="[11.2.0,)" />
1616
<PackageReference Include="Avalonia.Themes.Fluent" Version="[11.2.0,)" />
1717
<PackageReference Include="Avalonia.Controls.DataGrid" Version="[11.2.0,)" />
18+
<PackageReference Include="Avalonia.Controls.TreeDataGrid" Version="11.1.1"/>
1819
</ItemGroup>
1920
</Project>

src/Devolutions.AvaloniaTheme.Linux/Devolutions.AvaloniaTheme.Linux.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<PackageReference Include="Avalonia" Version="[11.2.0,)" />
1616
<PackageReference Include="Avalonia.Themes.Fluent" Version="[11.2.0,)" />
1717
<PackageReference Include="Avalonia.Controls.DataGrid" Version="[11.2.0,)" />
18+
<PackageReference Include="Avalonia.Controls.TreeDataGrid" Version="11.1.1"/>
1819

1920
<!--
2021
Avalonia.Svg.Skia 11.2.7.1 require at least 3.116, which is bugged atm on linux.

src/Devolutions.AvaloniaTheme.MacOS/Devolutions.AvaloniaTheme.MacOS.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313

1414
<ItemGroup>
1515
<PackageReference Include="Avalonia" Version="[11.2.0,)"/>
16-
<PackageReference Include="Avalonia.Controls.DataGrid" Version="[11.2.0,)"/>
17-
<PackageReference Include="Avalonia.Svg.Skia" Version="[11.2.0,)"/>
1816
<PackageReference Include="Avalonia.Themes.Fluent" Version="[11.2.0,)"/>
17+
<PackageReference Include="Avalonia.Svg.Skia" Version="[11.2.0,)"/>
18+
<PackageReference Include="Avalonia.Controls.DataGrid" Version="[11.2.0,)"/>
19+
<PackageReference Include="Avalonia.Controls.TreeDataGrid" Version="11.1.1"/>
1920
</ItemGroup>
2021

2122
<ItemGroup>

0 commit comments

Comments
 (0)