diff --git a/demo/Semi.Avalonia.TreeDataGrid.Demo/MainWindow.axaml b/demo/Semi.Avalonia.TreeDataGrid.Demo/MainWindow.axaml
index f6abc32..18d2f7b 100644
--- a/demo/Semi.Avalonia.TreeDataGrid.Demo/MainWindow.axaml
+++ b/demo/Semi.Avalonia.TreeDataGrid.Demo/MainWindow.axaml
@@ -10,9 +10,12 @@
d:DesignWidth="800"
x:DataType="vm:SongsPageViewModel"
mc:Ignorable="d">
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/demo/Semi.Avalonia.TreeDataGrid.Demo/MainWindow.axaml.cs b/demo/Semi.Avalonia.TreeDataGrid.Demo/MainWindow.axaml.cs
index 8bb425e..264cf5f 100644
--- a/demo/Semi.Avalonia.TreeDataGrid.Demo/MainWindow.axaml.cs
+++ b/demo/Semi.Avalonia.TreeDataGrid.Demo/MainWindow.axaml.cs
@@ -1,4 +1,7 @@
+using Avalonia;
using Avalonia.Controls;
+using Avalonia.Interactivity;
+using Avalonia.Styling;
using Semi.Avalonia.TreeDataGrid.Demo.ViewModels;
namespace Semi.Avalonia.TreeDataGrid.Demo;
@@ -10,4 +13,14 @@ public partial class MainWindow : Window
InitializeComponent();
this.DataContext = new SongsPageViewModel();
}
+
+ private void Button_OnClick(object? sender, RoutedEventArgs e)
+ {
+ var app = Application.Current;
+ if (app is not null)
+ {
+ var theme = app.ActualThemeVariant;
+ app.RequestedThemeVariant = theme == ThemeVariant.Dark ? ThemeVariant.Light : ThemeVariant.Dark;
+ }
+ }
}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.TreeDataGrid.Demo/ViewModels/SongsPageViewModel.cs b/demo/Semi.Avalonia.TreeDataGrid.Demo/ViewModels/SongsPageViewModel.cs
index fc5fbd7..22c3035 100644
--- a/demo/Semi.Avalonia.TreeDataGrid.Demo/ViewModels/SongsPageViewModel.cs
+++ b/demo/Semi.Avalonia.TreeDataGrid.Demo/ViewModels/SongsPageViewModel.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.Linq;
using Avalonia.Controls;
using Avalonia.Controls.Models.TreeDataGrid;
using CommunityToolkit.Mvvm.ComponentModel;
@@ -9,20 +10,26 @@ namespace Semi.Avalonia.TreeDataGrid.Demo.ViewModels;
public class SongsPageViewModel: ObservableObject
{
- private readonly ObservableCollection _songs;
+ private readonly ObservableCollection _songs;
- public FlatTreeDataGridSource Songs { get; }
+ public FlatTreeDataGridSource Songs { get; }
public SongsPageViewModel()
{
- _songs = new ObservableCollection(Song.Songs);
+ _songs = new ObservableCollection(Song.Songs.Select(a => new SongViewModel()
+ {
+ Title = a.Title, Artist = a.Artist, Album = a.Album, CountOfComment = a.CountOfComment,
+ IsSelected = false
+ }));
- Songs = new FlatTreeDataGridSource(_songs)
+ Songs = new FlatTreeDataGridSource(_songs)
{
Columns =
{
- new TextColumn("Title", a=>a.Title, (o, a) => o.Title = a, new GridLength(6, GridUnitType.Star)),
- new TextColumn("Artist", a=>a.Artist, (o, a) => o.Artist = a, new GridLength(6, GridUnitType.Star)),
+ new CheckBoxColumn("IsSelected", a=>a.IsSelected, (model, b) => { model.IsSelected = b; }, new GridLength(72, GridUnitType.Pixel)),
+ new TextColumn("Title", a=>a.Title, (o, a) => o.Title = a, new GridLength(6, GridUnitType.Star)),
+ new TextColumn("Artist", a=>a.Artist, (o, a) => o.Artist = a, new GridLength(6, GridUnitType.Star)),
+ new TextColumn("Album", a=>a.Album, (o, a) => o.Album = a, new GridLength(6, GridUnitType.Star)),
}
};
}
diff --git a/src/Semi.Avalonia.TreeDataGrid/Dark.axaml b/src/Semi.Avalonia.TreeDataGrid/Dark.axaml
index f15e970..2f5ee54 100644
--- a/src/Semi.Avalonia.TreeDataGrid/Dark.axaml
+++ b/src/Semi.Avalonia.TreeDataGrid/Dark.axaml
@@ -1,12 +1,12 @@
-
-
-
+
+
+
-
-
-
-
+
+
+
+
diff --git a/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml b/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml
index 84d1158..e5db021 100644
--- a/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml
+++ b/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml
@@ -181,6 +181,8 @@
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{TemplateBinding CornerRadius}">