From 925c368c534612b626e8d492441a339b40073e5f Mon Sep 17 00:00:00 2001
From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com>
Date: Fri, 6 Feb 2026 20:24:35 +0800
Subject: [PATCH] chore: ready for 12.0.x.
---
demo/Directory.Packages.props | 4 +-
.../MainActivity.cs | 2 +-
demo/Semi.Avalonia.Demo/App.axaml | 4 +-
.../Controls/ColorDetailControl.cs | 1 +
.../Pages/DataGridDemo.axaml | 179 ---------
.../Pages/DataGridDemo.axaml.cs | 13 -
.../Pages/HighContrastDemo.axaml | 327 ----------------
.../Pages/HighContrastDemo.axaml.cs | 24 --
demo/Semi.Avalonia.Demo/Pages/Overview.axaml | 28 +-
.../Pages/PaletteDemo.axaml.cs | 1 +
.../Pages/TreeDataGridDemo.axaml | 126 ------
.../Pages/TreeDataGridDemo.axaml.cs | 22 --
.../Pages/VariablesDemo.axaml | 104 -----
.../Pages/VariablesDemo.axaml.cs | 24 --
.../Semi.Avalonia.Demo.csproj | 19 +-
.../Themes/FunctionalColorGroupControl.axaml | 152 --------
.../Themes/ShadowGroupControl.axaml | 110 ------
demo/Semi.Avalonia.Demo/Themes/_index.axaml | 2 -
.../ViewModels/DataGridDemoViewModel.cs | 154 --------
.../TreeDataGridDemo/FilesPageViewModel.cs | 363 ------------------
.../TreeDataGridDemo/SongsPageViewModel.cs | 54 ---
.../TreeDataGridDemoViewModel.cs | 9 -
.../ViewModels/VariablesDemoViewModel.cs | 151 --------
demo/Semi.Avalonia.Demo/Views/MainView.axaml | 30 +-
src/Directory.Packages.props | 3 +-
.../Semi.Avalonia.ColorPicker.csproj | 2 +-
src/Semi.Avalonia/Semi.Avalonia.csproj | 3 +-
27 files changed, 52 insertions(+), 1859 deletions(-)
delete mode 100644 demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml
delete mode 100644 demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml.cs
delete mode 100644 demo/Semi.Avalonia.Demo/Pages/HighContrastDemo.axaml
delete mode 100644 demo/Semi.Avalonia.Demo/Pages/HighContrastDemo.axaml.cs
delete mode 100644 demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml
delete mode 100644 demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml.cs
delete mode 100644 demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml
delete mode 100644 demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml.cs
delete mode 100644 demo/Semi.Avalonia.Demo/Themes/FunctionalColorGroupControl.axaml
delete mode 100644 demo/Semi.Avalonia.Demo/Themes/ShadowGroupControl.axaml
delete mode 100644 demo/Semi.Avalonia.Demo/ViewModels/DataGridDemoViewModel.cs
delete mode 100644 demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/FilesPageViewModel.cs
delete mode 100644 demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/SongsPageViewModel.cs
delete mode 100644 demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/TreeDataGridDemoViewModel.cs
delete mode 100644 demo/Semi.Avalonia.Demo/ViewModels/VariablesDemoViewModel.cs
diff --git a/demo/Directory.Packages.props b/demo/Directory.Packages.props
index 9338cef..ef55cbc 100644
--- a/demo/Directory.Packages.props
+++ b/demo/Directory.Packages.props
@@ -1,13 +1,13 @@
true
- 11.3.10
+ 12.0.999-cibuild0061987-alpha
11.3.10
3.119.1
-
+
diff --git a/demo/Semi.Avalonia.Demo.Android/MainActivity.cs b/demo/Semi.Avalonia.Demo.Android/MainActivity.cs
index 012a48d..ce98e89 100644
--- a/demo/Semi.Avalonia.Demo.Android/MainActivity.cs
+++ b/demo/Semi.Avalonia.Demo.Android/MainActivity.cs
@@ -12,7 +12,7 @@ namespace Semi.Avalonia.Demo.Android;
MainLauncher = true,
LaunchMode = LaunchMode.SingleTop,
ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize | ConfigChanges.UiMode)]
-public class MainActivity : AvaloniaMainActivity
+public class MainActivity : AvaloniaMainActivity
{
protected override AppBuilder CustomizeAppBuilder(AppBuilder builder)
{
diff --git a/demo/Semi.Avalonia.Demo/App.axaml b/demo/Semi.Avalonia.Demo/App.axaml
index 99f40c7..5bb5dcb 100644
--- a/demo/Semi.Avalonia.Demo/App.axaml
+++ b/demo/Semi.Avalonia.Demo/App.axaml
@@ -10,8 +10,8 @@
-
-
+
+
diff --git a/demo/Semi.Avalonia.Demo/Controls/ColorDetailControl.cs b/demo/Semi.Avalonia.Demo/Controls/ColorDetailControl.cs
index 06a2ce8..c2ac11e 100644
--- a/demo/Semi.Avalonia.Demo/Controls/ColorDetailControl.cs
+++ b/demo/Semi.Avalonia.Demo/Controls/ColorDetailControl.cs
@@ -3,6 +3,7 @@ using System.Threading.Tasks;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
+using Avalonia.Input.Platform;
using Avalonia.Media;
using Semi.Avalonia.Demo.Converters;
diff --git a/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml
deleted file mode 100644
index 8fb13a9..0000000
--- a/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml
+++ /dev/null
@@ -1,179 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml.cs
deleted file mode 100644
index 6744fb7..0000000
--- a/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Avalonia.Controls;
-using Semi.Avalonia.Demo.ViewModels;
-
-namespace Semi.Avalonia.Demo.Pages;
-
-public partial class DataGridDemo : UserControl
-{
- public DataGridDemo()
- {
- InitializeComponent();
- DataContext = new DataGridDemoViewModel();
- }
-}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Pages/HighContrastDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/HighContrastDemo.axaml
deleted file mode 100644
index 82f2ad8..0000000
--- a/demo/Semi.Avalonia.Demo/Pages/HighContrastDemo.axaml
+++ /dev/null
@@ -1,327 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Pages/HighContrastDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/HighContrastDemo.axaml.cs
deleted file mode 100644
index 2d42757..0000000
--- a/demo/Semi.Avalonia.Demo/Pages/HighContrastDemo.axaml.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System.Threading.Tasks;
-using Avalonia.Controls;
-using Semi.Avalonia.Demo.ViewModels;
-
-namespace Semi.Avalonia.Demo.Pages;
-
-public partial class HighContrastDemo : UserControl
-{
- public HighContrastDemo()
- {
- InitializeComponent();
- this.DataContext = new HighContrastDemoViewModel();
- }
-
- public async Task Copy(object? o)
- {
- if (o is null) return;
- var toplevel = TopLevel.GetTopLevel(this);
- if (toplevel?.Clipboard is { } c)
- {
- await c.SetTextAsync(o.ToString());
- }
- }
-}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Pages/Overview.axaml b/demo/Semi.Avalonia.Demo/Pages/Overview.axaml
index 5ff313c..748caf9 100644
--- a/demo/Semi.Avalonia.Demo/Pages/Overview.axaml
+++ b/demo/Semi.Avalonia.Demo/Pages/Overview.axaml
@@ -353,12 +353,12 @@
-
+
@@ -368,12 +368,12 @@
-
+
@@ -383,12 +383,12 @@
-
+
@@ -398,12 +398,12 @@
-
+
@@ -413,12 +413,12 @@
-
+
@@ -428,12 +428,12 @@
-
+
@@ -443,12 +443,12 @@
-
+
diff --git a/demo/Semi.Avalonia.Demo/Pages/PaletteDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/PaletteDemo.axaml.cs
index 5d6be69..33b7283 100644
--- a/demo/Semi.Avalonia.Demo/Pages/PaletteDemo.axaml.cs
+++ b/demo/Semi.Avalonia.Demo/Pages/PaletteDemo.axaml.cs
@@ -1,6 +1,7 @@
using System.Threading.Tasks;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
+using Avalonia.Input.Platform;
using Avalonia.Threading;
using Semi.Avalonia.Demo.ViewModels;
diff --git a/demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml
deleted file mode 100644
index 7ed1930..0000000
--- a/demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml.cs
deleted file mode 100644
index 5c511cb..0000000
--- a/demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Avalonia.Controls;
-using Avalonia.Input;
-using Semi.Avalonia.Demo.ViewModels;
-
-namespace Semi.Avalonia.Demo.Pages;
-
-public partial class TreeDataGridDemo : UserControl
-{
- public TreeDataGridDemo()
- {
- InitializeComponent();
- this.DataContext = new TreeDataGridDemoViewModel();
- }
-
- private void SelectedPath_KeyDown(object? sender, KeyEventArgs e)
- {
- if (e.Key == Key.Enter && DataContext is TreeDataGridDemoViewModel vm)
- {
- vm.FilesContext.SelectedPath = (sender as TextBox)?.Text;
- }
- }
-}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml
deleted file mode 100644
index a30eac7..0000000
--- a/demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml.cs
deleted file mode 100644
index 29521e4..0000000
--- a/demo/Semi.Avalonia.Demo/Pages/VariablesDemo.axaml.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System.Threading.Tasks;
-using Avalonia.Controls;
-using Semi.Avalonia.Demo.ViewModels;
-
-namespace Semi.Avalonia.Demo.Pages;
-
-public partial class VariablesDemo : UserControl
-{
- public VariablesDemo()
- {
- InitializeComponent();
- this.DataContext = new VariablesDemoViewModel();
- }
-
- public async Task Copy(object? o)
- {
- if (o is null) return;
- var toplevel = TopLevel.GetTopLevel(this);
- if (toplevel?.Clipboard is { } c)
- {
- await c.SetTextAsync(o.ToString());
- }
- }
-}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj b/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj
index bd3d1f0..ea4d27f 100644
--- a/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj
+++ b/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj
@@ -13,20 +13,23 @@
-
+
-
- None
- All
-
+
+
+
+
-
-
-
+
+
+
+
+
+
diff --git a/demo/Semi.Avalonia.Demo/Themes/FunctionalColorGroupControl.axaml b/demo/Semi.Avalonia.Demo/Themes/FunctionalColorGroupControl.axaml
deleted file mode 100644
index 1b65098..0000000
--- a/demo/Semi.Avalonia.Demo/Themes/FunctionalColorGroupControl.axaml
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Themes/ShadowGroupControl.axaml b/demo/Semi.Avalonia.Demo/Themes/ShadowGroupControl.axaml
deleted file mode 100644
index 5028edf..0000000
--- a/demo/Semi.Avalonia.Demo/Themes/ShadowGroupControl.axaml
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Themes/_index.axaml b/demo/Semi.Avalonia.Demo/Themes/_index.axaml
index cfccca3..c006588 100644
--- a/demo/Semi.Avalonia.Demo/Themes/_index.axaml
+++ b/demo/Semi.Avalonia.Demo/Themes/_index.axaml
@@ -2,8 +2,6 @@
-
-
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/ViewModels/DataGridDemoViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/DataGridDemoViewModel.cs
deleted file mode 100644
index eae835b..0000000
--- a/demo/Semi.Avalonia.Demo/ViewModels/DataGridDemoViewModel.cs
+++ /dev/null
@@ -1,154 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using Avalonia.Collections;
-using CommunityToolkit.Mvvm.ComponentModel;
-using CommunityToolkit.Mvvm.Input;
-
-namespace Semi.Avalonia.Demo.ViewModels;
-
-public class DataGridDemoViewModel : ObservableObject
-{
- public ObservableCollection GridData1 { get; set; }
-
- public DataGridCollectionView GridData2 { get; set; }
-
- public ObservableCollection GridData3 { get; set; }
-
- public RelayCommand AddCommand { get; set; }
-
- public DataGridDemoViewModel()
- {
- GridData1 = new ObservableCollection(Song.Songs);
- GridData2 = new DataGridCollectionView(Song.Songs);
- GridData2.GroupDescriptions.Add(new DataGridPathGroupDescription("Album"));
- GridData3 = new ObservableCollection(Song.Songs.Take(10).Select(a => new SongViewModel()
- {
- Title = a.Title,
- Artist = a.Artist,
- Album = a.Album,
- CountOfComment = a.CountOfComment,
- IsSelected = false
- }));
- AddCommand = new RelayCommand(Add);
- }
-
- private void Add()
- {
- GridData3.Add(new SongViewModel());
- }
-}
-
-public class Song
-{
- public string? Title { get; set; }
- public string? Artist { get; set; }
- public TimeSpan? Duration { get; set; }
- public string? Album { get; set; }
- public int CountOfComment { get; set; }
- public string Url { get; set; }
-
- public Song(string title, string artist, int m, int s, string album, int countOfComment, int netEaseId)
- {
- Title = title;
- Artist = artist;
- Duration = new TimeSpan(0, m, s);
- Album = album;
- CountOfComment = countOfComment;
- Url = $"https://music.163.com/song?id={netEaseId}";
- }
-
- public static List Albums =>
- [
- "A.S.I.A",
- "饕餮人间",
- "七步咙咚呛",
- "大惊小怪",
- "The ONE",
- "以梦为马 (壮志骄阳版)",
- "emo了",
- "一眼万年",
- "冲刺吧",
- "爱的赏味期限",
- "COSMIC ANTHEM / 手紙",
- "世界晚安",
- "明年也要好好长大",
- "320万年前",
- "W.O.R.L.D."
- ];
-
- public static List Songs =>
- [
- new("好肚有肚(feat.李玲玉)", "熊猫堂ProducePandas", 2, 50, "A.S.I.A", 730, 1487039339),
- new("荒诞秀", "熊猫堂ProducePandas", 3, 15, "A.S.I.A", 639, 1487037601),
- new("长大", "熊猫堂ProducePandas", 4, 6, "A.S.I.A", 1114, 1487037690),
- new("招财猫(feat.纪粹希(G-Tracy))", "熊猫堂ProducePandas", 3, 37, "A.S.I.A", 361, 1487039632),
- new("千转", "熊猫堂ProducePandas", 4, 0, "A.S.I.A", 1115, 1477312398),
- new("辣辣辣", "熊猫堂ProducePandas", 3, 24, "A.S.I.A", 1873, 1465043716),
- new("碎碎念", "熊猫堂ProducePandas", 3, 25, "A.S.I.A", 676, 1474142064),
- new("盘他", "熊猫堂ProducePandas", 2, 16, "A.S.I.A", 365, 1481652786),
- new("Na Na Na", "熊猫堂ProducePandas", 3, 26, "A.S.I.A", 312, 1469022662),
- new("Indigo", "熊猫堂ProducePandas", 3, 15, "A.S.I.A", 137, 1487039517),
- new("饕餮人间", "熊猫堂ProducePandas", 3, 20, "饕餮人间", 1295, 1499584605),
- new("七步咙咚呛", "熊猫堂ProducePandas", 3, 10, "七步咙咚呛", 175, 1809095152),
- new("大惊小怪", "熊猫堂ProducePandas", 3, 32, "大惊小怪", 10420, 1847477425),
- new("工具人", "熊猫堂ProducePandas", 2, 46, "大惊小怪", 1135, 1847476499),
- new("以梦为马", "熊猫堂ProducePandas", 4, 19, "大惊小怪", 18361, 1836034373),
- new("以梦为马(Piano Version)", "熊猫堂ProducePandas", 3, 4, "大惊小怪", 570, 1847477423),
- new("The ONE", "熊猫堂ProducePandas", 2, 58, "The ONE", 1508, 1864329424),
- new("The ONE(日文版)", "熊猫堂ProducePandas", 2, 57, "The ONE", 385, 1864329429),
- new("以梦为马 (壮志骄阳版)", "熊猫堂ProducePandas", 4, 19, "以梦为马 (壮志骄阳版)", 161, 1865138896),
- new("New Horse", "熊猫堂ProducePandas", 2, 30, "emo了", 643, 1887021307),
- new("不例外", "熊猫堂ProducePandas", 3, 31, "emo了", 1818, 1887022665),
- new("满意", "熊猫堂ProducePandas", 4, 32, "emo了", 1081, 1882433472),
- new("就算与全世界为敌也要跟你在一起", "熊猫堂ProducePandas", 3, 32, "emo了", 2119, 1881759960),
- new("The ONE", "熊猫堂ProducePandas", 2, 58, "emo了", 67, 1887022648),
- new("口香糖", "熊猫堂ProducePandas", 3, 10, "emo了", 2181, 1885502254),
- new("Suuuuuuper Mario", "熊猫堂ProducePandas", 3, 32, "emo了", 1010, 1887021318),
- new("饕餮人间", "熊猫堂ProducePandas", 3, 22, "emo了", 109, 1887021320),
- new("以梦为马 (壮志骄阳版)", "熊猫堂ProducePandas", 4, 21, "emo了", 34, 1887022666),
- new("The ONE(日文版)", "熊猫堂ProducePandas", 2, 57, "emo了", 27, 1887022646),
- new("满意(DJheap九天版)", "熊猫堂ProducePandas", 4, 31, "emo了", 31, 1901605941),
- new("一眼万年", "熊猫堂ProducePandas", 3, 54, "一眼万年", 20, 1922599361),
- new("冲刺", "熊猫堂ProducePandas", 3, 49, "冲刺吧", 1006, 1932878194),
- new("滴答滴", "熊猫堂ProducePandas", 2, 30, "爱的赏味期限", 86, 1957515790),
- new("热带季风", "熊猫堂ProducePandas", 2, 45, "爱的赏味期限", 212, 1957514964),
- new("渣", "熊猫堂ProducePandas", 3, 28, "爱的赏味期限", 22, 1957514965),
- new("独特", "熊猫堂ProducePandas", 3, 33, "爱的赏味期限", 62, 1957514966),
- new("雨后", "熊猫堂ProducePandas", 4, 15, "爱的赏味期限", 23, 1957514967),
- new("然后然后", "熊猫堂ProducePandas", 3, 50, "爱的赏味期限", 108, 1957514968),
- new("丢", "熊猫堂ProducePandas", 3, 26, "爱的赏味期限", 30, 1957515792),
- new("热带疾风(FACEVOID桃心连哥 Remix)", "熊猫堂ProducePandas", 3, 23, "爱的赏味期限", 55, 1957515793),
- new("COSMIC ANTHEM -Japanese Ver.-", "熊猫堂ProducePandas", 3, 11, "COSMIC ANTHEM / 手紙", 0, 1977171493),
- new("手紙 (「長大-You Raise Me Up-」-Japanese Ver.-)", "熊猫堂ProducePandas", 4, 11, "COSMIC ANTHEM / 手紙", 0,
- 1977171494),
- new("COSMIC ANTHEM -Chinese Ver.-", "熊猫堂ProducePandas", 3, 31, "COSMIC ANTHEM / 手紙", 0, 1977172202),
- new("世界晚安", "熊猫堂ProducePandas", 2, 59, "世界晚安", 652, 1985063377),
- new("世界晚安(泰文版)", "熊猫堂ProducePandas", 2, 59, "世界晚安", 134, 1987842504),
- new("世界晚安(钢琴版)", "熊猫堂ProducePandas", 3, 2, "世界晚安", 76, 1990475933),
- new("世界晚安(泰文钢琴版)", "熊猫堂ProducePandas", 3, 2, "世界晚安", 29, 1990475934),
- new("世界晚安(DJ沈念版)", "熊猫堂ProducePandas", 3, 9, "世界晚安", 34, 2014263184),
- new("世界晚安(钢琴配乐)", "熊猫堂ProducePandas", 2, 59, "世界晚安", 11, 2014263185),
- new("明年也要好好长大", "熊猫堂ProducePandas", 3, 12, "明年也要好好长大", 0, 2010515162),
- new("320万年前(DJ沈念版)", "熊猫堂ProducePandas", 3, 21, "320万年前", 8, 2055888636),
- new("320万年前", "熊猫堂ProducePandas", 3, 7, "W.O.R.L.D.", 329, 2049770469),
- new("隐德来希", "熊猫堂ProducePandas", 3, 3, "W.O.R.L.D.", 594, 2061317924),
- new("孔明", "熊猫堂ProducePandas", 3, 59, "W.O.R.L.D.", 91, 2063175274),
- new("锦鲤卟噜噜", "熊猫堂ProducePandas", 3, 5, "W.O.R.L.D.", 67, 2059208262),
- new("指鹿为马", "熊猫堂ProducePandas", 3, 12, "W.O.R.L.D.", 74, 2063175272),
- new("热带季风Remix", "熊猫堂ProducePandas", 3, 22, "W.O.R.L.D.", 23, 2063173319),
- new("加州梦境", "熊猫堂ProducePandas", 2, 56, "W.O.R.L.D.", 1662, 2063173324),
- new("渐近自由", "熊猫堂ProducePandas", 4, 19, "W.O.R.L.D.", 124, 2063173321),
- new("世界所有的烂漫", "熊猫堂ProducePandas", 3, 30, "W.O.R.L.D.", 335, 2053388775)
- ];
-}
-
-public partial class SongViewModel : ObservableObject
-{
- [ObservableProperty] private string? _title;
- [ObservableProperty] private string? _artist;
- [ObservableProperty] private string? _album;
- [ObservableProperty] private int _countOfComment;
- [ObservableProperty] private bool? _isSelected;
-}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/FilesPageViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/FilesPageViewModel.cs
deleted file mode 100644
index a01d430..0000000
--- a/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/FilesPageViewModel.cs
+++ /dev/null
@@ -1,363 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-using System.Runtime.InteropServices;
-using Avalonia.Controls;
-using Avalonia.Controls.Models.TreeDataGrid;
-using Avalonia.Controls.Selection;
-using Avalonia.Threading;
-using CommunityToolkit.Mvvm.ComponentModel;
-
-namespace Semi.Avalonia.Demo.ViewModels;
-
-public partial class FilesPageViewModel : ObservableObject
-{
- public IList Drives { get; }
- public HierarchicalTreeDataGridSource Source { get; }
- [ObservableProperty] private string _selectedDrive;
- private string? _selectedPath;
- [ObservableProperty] private FileNodeViewModel? _root;
-
- public string? SelectedPath
- {
- get => _selectedPath;
- set => SetSelectedPath(value);
- }
-
- partial void OnSelectedDriveChanged(string value)
- {
- Root = new FileNodeViewModel(value, true, true);
- if (Source is not null)
- {
- Source.Items = [Root];
- }
- }
-
- public FilesPageViewModel()
- {
- Drives = DriveInfo.GetDrives().Select(x => x.Name).ToList();
- if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
- {
- SelectedDrive = @"C:\";
- }
- else
- {
- SelectedDrive = Drives.FirstOrDefault() ?? "/";
- }
-
- Source = new HierarchicalTreeDataGridSource([])
- {
- Columns =
- {
- new CheckBoxColumn(
- null,
- x => x.IsChecked,
- (o, v) => o.IsChecked = v,
- options: new CheckBoxColumnOptions
- {
- CanUserResizeColumn = false,
- }),
- new HierarchicalExpanderColumn(
- new TemplateColumn(
- "Name",
- "FileNameCell",
- "FileNameEditCell",
- new GridLength(1, GridUnitType.Star),
- new TemplateColumnOptions
- {
- CompareAscending = FileNodeViewModel.SortAscending(vm => vm.Name),
- CompareDescending = FileNodeViewModel.SortDescending(vm => vm.Name),
- IsTextSearchEnabled = true,
- TextSearchValueSelector = vm => vm.Name
- }),
- vm => vm.Children,
- vm => vm.HasChildren,
- vm => vm.IsExpanded),
- new TextColumn(
- "Size",
- vm => vm.Size,
- options: new TextColumnOptions
- {
- CompareAscending = FileNodeViewModel.SortAscending(x => x.Size),
- CompareDescending = FileNodeViewModel.SortDescending(x => x.Size),
- }),
- new TextColumn(
- "Modified",
- x => x.Modified,
- options: new TextColumnOptions
- {
- CompareAscending = FileNodeViewModel.SortAscending(x => x.Modified),
- CompareDescending = FileNodeViewModel.SortDescending(x => x.Modified),
- }),
- }
- };
- Source.RowSelection!.SingleSelect = false;
- Source.RowSelection.SelectionChanged += SelectionChanged;
- }
-
- private void SelectionChanged(object? sender, TreeSelectionModelSelectionChangedEventArgs e)
- {
- var selectedPath = Source.RowSelection?.SelectedItem?.Path;
- this.SetProperty(ref _selectedPath, selectedPath, nameof(SelectedPath));
-
- foreach (var i in e.DeselectedItems)
- Trace.WriteLine($"Deselected '{i?.Path}'");
- foreach (var i in e.SelectedItems)
- Trace.WriteLine($"Selected '{i?.Path}'");
- }
- private void SetSelectedPath(string? path)
- {
- if (string.IsNullOrEmpty(path))
- {
- Source.RowSelection!.Clear();
- return;
- }
-
- var components = new Stack();
- DirectoryInfo? d = null;
-
- if (File.Exists(path))
- {
- var f = new FileInfo(path);
- components.Push(f.Name);
- d = f.Directory;
- }
- else if (Directory.Exists(path))
- {
- d = new DirectoryInfo(path);
- }
-
- while (d is not null)
- {
- components.Push(d.Name);
- d = d.Parent;
- }
-
- var index = IndexPath.Unselected;
-
- if (components.Count > 0)
- {
- var drive = components.Pop();
- var driveIndex = Drives.FindIndex(x => string.Equals(x, drive, StringComparison.OrdinalIgnoreCase));
-
- if (driveIndex >= 0)
- SelectedDrive = Drives[driveIndex];
-
- var node = Root;
- index = new IndexPath(0);
-
- while (node is not null && components.Count > 0)
- {
- node.IsExpanded = true;
-
- var component = components.Pop();
- var i = node.Children.FindIndex(x => string.Equals(x.Name, component, StringComparison.OrdinalIgnoreCase));
- node = i >= 0 ? node.Children[i] : null;
- index = i >= 0 ? index.Append(i) : default;
- }
- }
-
- Source.Items = [Root!];
- Source.RowSelection!.SelectedIndex = index;
- }
-}
-
-public partial class FileNodeViewModel : ObservableObject, IEditableObject
-{
- [ObservableProperty] private string _path;
- [ObservableProperty] private string _name;
- private string? _undoName;
- [ObservableProperty] private long? _size;
- [ObservableProperty] private DateTimeOffset? _modified;
- private FileSystemWatcher? _watcher;
- private ObservableCollection? _children;
- [ObservableProperty] private bool _hasChildren = true;
- [ObservableProperty] private bool _isExpanded;
-
- public FileNodeViewModel(string path, bool isDirectory, bool isRoot = false)
- {
- Path = path;
- Name = isRoot ? path : System.IO.Path.GetFileName(Path);
- IsExpanded = isRoot;
- IsDirectory = isDirectory;
- HasChildren = isDirectory;
-
- if (!isDirectory)
- {
- var info = new FileInfo(path);
- Size = info.Length;
- Modified = info.LastWriteTimeUtc;
- }
- }
-
- public bool IsChecked { get; set; }
- public bool IsDirectory { get; }
- public IReadOnlyList Children => _children ??= LoadChildren();
-
- private ObservableCollection LoadChildren()
- {
- if (!IsDirectory)
- {
- throw new NotSupportedException();
- }
-
- var options = new EnumerationOptions { IgnoreInaccessible = true };
- var result = new ObservableCollection();
-
- foreach (var d in Directory.EnumerateDirectories(Path, "*", options))
- {
- result.Add(new FileNodeViewModel(d, true));
- }
-
- foreach (var f in Directory.EnumerateFiles(Path, "*", options))
- {
- result.Add(new FileNodeViewModel(f, false));
- }
-
- _watcher = new FileSystemWatcher
- {
- Path = Path,
- NotifyFilter = NotifyFilters.FileName | NotifyFilters.Size | NotifyFilters.LastWrite,
- };
-
- _watcher.Changed += OnChanged;
- _watcher.Created += OnCreated;
- _watcher.Deleted += OnDeleted;
- _watcher.Renamed += OnRenamed;
- _watcher.EnableRaisingEvents = true;
-
- if (result.Count == 0)
- HasChildren = false;
-
- return result;
- }
-
- public static Comparison SortAscending(Func selector)
- {
- return (x, y) =>
- {
- if (x is null && y is null)
- return 0;
- else if (x is null)
- return -1;
- else if (y is null)
- return 1;
- if (x.IsDirectory == y.IsDirectory)
- return Comparer.Default.Compare(selector(x), selector(y));
- else if (x.IsDirectory)
- return -1;
- else
- return 1;
- };
- }
-
- public static Comparison SortDescending(Func selector)
- {
- return (x, y) =>
- {
- if (x is null && y is null)
- return 0;
- else if (x is null)
- return 1;
- else if (y is null)
- return -1;
- if (x.IsDirectory == y.IsDirectory)
- return Comparer.Default.Compare(selector(y), selector(x));
- else if (x.IsDirectory)
- return -1;
- else
- return 1;
- };
- }
-
- void IEditableObject.BeginEdit() => _undoName = Name;
- void IEditableObject.CancelEdit() => Name = _undoName ?? string.Empty;
- void IEditableObject.EndEdit() => _undoName = null;
-
- private void OnChanged(object sender, FileSystemEventArgs e)
- {
- if (e.ChangeType == WatcherChangeTypes.Changed && File.Exists(e.FullPath))
- {
- Dispatcher.UIThread.Post(() =>
- {
- foreach (var child in _children!)
- {
- if (child.Path == e.FullPath)
- {
- if (!child.IsDirectory)
- {
- var info = new FileInfo(e.FullPath);
- child.Size = info.Length;
- child.Modified = info.LastWriteTimeUtc;
- }
-
- break;
- }
- }
- });
- }
- }
-
- private void OnCreated(object sender, FileSystemEventArgs e)
- {
- Dispatcher.UIThread.Post(() =>
- {
- var node = new FileNodeViewModel(
- e.FullPath,
- File.GetAttributes(e.FullPath).HasFlag(FileAttributes.Directory));
- _children!.Add(node);
- });
- }
-
- private void OnDeleted(object sender, FileSystemEventArgs e)
- {
- Dispatcher.UIThread.Post(() =>
- {
- for (var i = 0; i < _children!.Count; ++i)
- {
- if (_children[i].Path == e.FullPath)
- {
- _children.RemoveAt(i);
- Debug.WriteLine($"Removed {e.FullPath}");
- break;
- }
- }
- });
- }
-
- private void OnRenamed(object sender, RenamedEventArgs e)
- {
- Dispatcher.UIThread.Post(() =>
- {
- foreach (var child in _children!)
- {
- if (child.Path == e.OldFullPath)
- {
- child.Path = e.FullPath;
- child.Name = e.Name ?? string.Empty;
- break;
- }
- }
- });
- }
-}
-
-internal static class ListExtensions
-{
- public static int FindIndex(this IEnumerable source, Func predicate)
- {
- int i = 0;
- foreach (var item in source)
- {
- if (predicate(item))
- return i;
- i++;
- }
-
- return -1;
- }
-}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/SongsPageViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/SongsPageViewModel.cs
deleted file mode 100644
index 79e49c0..0000000
--- a/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/SongsPageViewModel.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using System.Collections.ObjectModel;
-using System.Linq;
-using Avalonia.Controls;
-using Avalonia.Controls.Models.TreeDataGrid;
-using CommunityToolkit.Mvvm.ComponentModel;
-
-namespace Semi.Avalonia.Demo.ViewModels;
-
-public class SongsPageViewModel : ObservableObject
-{
- public FlatTreeDataGridSource Songs { get; }
-
- public SongsPageViewModel()
- {
- var 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)
- {
- Columns =
- {
- new CheckBoxColumn(
- "IsSelected",
- a => a.IsSelected,
- (model, b) => { model.IsSelected = b; },
- new GridLength(108, 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 TemplateColumn("Album",
- "AlbumCell",
- "AlbumEditCell",
- new GridLength(6, GridUnitType.Star)),
- new TemplateColumn(
- "Comments",
- "CommentsCell",
- "CommentsEditCell",
- new GridLength(6, GridUnitType.Star)),
- }
- };
- }
-}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/TreeDataGridDemoViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/TreeDataGridDemoViewModel.cs
deleted file mode 100644
index 69d7379..0000000
--- a/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/TreeDataGridDemoViewModel.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using CommunityToolkit.Mvvm.ComponentModel;
-
-namespace Semi.Avalonia.Demo.ViewModels;
-
-public class TreeDataGridDemoViewModel : ObservableObject
-{
- public SongsPageViewModel SongsContext { get; } = new();
- public FilesPageViewModel FilesContext { get; } = new();
-}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/ViewModels/VariablesDemoViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/VariablesDemoViewModel.cs
deleted file mode 100644
index 639d02c..0000000
--- a/demo/Semi.Avalonia.Demo/ViewModels/VariablesDemoViewModel.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using Avalonia;
-using Avalonia.Collections;
-using Avalonia.Controls;
-using Avalonia.Media;
-using CommunityToolkit.Mvvm.ComponentModel;
-using Semi.Avalonia.Tokens;
-
-namespace Semi.Avalonia.Demo.ViewModels;
-
-public partial class VariablesDemoViewModel : ObservableObject
-{
- public DataGridCollectionView GridData { get; set; }
- [ObservableProperty] private string _searchText = string.Empty;
-
- public VariablesDemoViewModel()
- {
- IResourceDictionary dictionary = new Variables();
- foreach (var token in Tokens)
- {
- if (token.ResourceKey is not null && dictionary.TryGetValue(token.ResourceKey, out var value))
- {
- token.Type = value?.GetType();
- token.Value = GetValueString(value);
- }
- }
-
- GridData = new DataGridCollectionView(Tokens);
- GridData.GroupDescriptions.Add(new DataGridPathGroupDescription(nameof(VariableItem.Category)));
- }
-
- private static string? GetValueString(object? value)
- {
- if (value is null) return string.Empty;
-
- return value switch
- {
- double d => d.ToString(CultureInfo.InvariantCulture),
- CornerRadius c => c.IsUniform ? $"{c.TopLeft}" : c.ToString(),
- Thickness t => t.IsUniform ? $"{t.Left}" : t.ToString(),
- FontWeight fontWeight => Convert.ToInt32(fontWeight).ToString(),
- FontFamily fontFamily => fontFamily.FamilyNames.ToString(),
- _ => value.ToString()
- };
- }
-
- partial void OnSearchTextChanged(string value)
- {
- if (string.IsNullOrWhiteSpace(value))
- {
- GridData.Filter = _ => true;
- GridData.Refresh();
- return;
- }
-
- var search = value.Trim();
- GridData.Filter = item =>
- {
- if (item is not VariableItem variableItem) return false;
- return (variableItem.Category?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
- (variableItem.ResourceKey?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
- (variableItem.Value?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
- (variableItem.Type?.Name.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false) ||
- (variableItem.Description?.Contains(search, StringComparison.InvariantCultureIgnoreCase) ?? false);
- };
- GridData.Refresh();
- }
-
- private static List Tokens { get; set; } =
- [
- new("Height", "SemiHeightControlSmall"),
- new("Height", "SemiHeightControlDefault"),
- new("Height", "SemiHeightControlLarge"),
- new("Icon Size", "SemiWidthIconExtraSmall"),
- new("Icon Size", "SemiWidthIconSmall"),
- new("Icon Size", "SemiWidthIconMedium"),
- new("Icon Size", "SemiWidthIconLarge"),
- new("Icon Size", "SemiWidthIconExtraLarge"),
- new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingExtraSmall"),
- new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingSmall"),
- new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingMedium"),
- new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingLarge"),
- new("Border CornerRadius Spacing", "SemiBorderRadiusSpacingFull"),
- new("Border CornerRadius", "SemiBorderRadiusExtraSmall"),
- new("Border CornerRadius", "SemiBorderRadiusSmall"),
- new("Border CornerRadius", "SemiBorderRadiusMedium"),
- new("Border CornerRadius", "SemiBorderRadiusLarge"),
- new("Border CornerRadius", "SemiBorderRadiusFull"),
- new("Border Spacing", "SemiBorderSpacing"),
- new("Border Spacing", "SemiBorderSpacingControl"),
- new("Border Spacing", "SemiBorderSpacingControlFocus"),
- new("Border Thickness", "SemiBorderThickness"),
- new("Border Thickness", "SemiBorderThicknessControl"),
- new("Border Thickness", "SemiBorderThicknessControlFocus"),
- new("Spacing", "SemiSpacingNone"),
- new("Spacing", "SemiSpacingSuperTight"),
- new("Spacing", "SemiSpacingExtraTight"),
- new("Spacing", "SemiSpacingTight"),
- new("Spacing", "SemiSpacingBaseTight"),
- new("Spacing", "SemiSpacingBase"),
- new("Spacing", "SemiSpacingBaseLoose"),
- new("Spacing", "SemiSpacingLoose"),
- new("Spacing", "SemiSpacingExtraLoose"),
- new("Spacing", "SemiSpacingSuperLoose"),
- new("Thickness", "SemiThicknessNone"),
- new("Thickness", "SemiThicknessSuperTight"),
- new("Thickness", "SemiThicknessExtraTight"),
- new("Thickness", "SemiThicknessTight"),
- new("Thickness", "SemiThicknessBaseTight"),
- new("Thickness", "SemiThicknessBase"),
- new("Thickness", "SemiThicknessBaseLoose"),
- new("Thickness", "SemiThicknessLoose"),
- new("Thickness", "SemiThicknessExtraLoose"),
- new("Thickness", "SemiThicknessSuperLoose"),
- new("FontSize", "SemiFontSizeSmall"),
- new("FontSize", "SemiFontSizeRegular"),
- new("FontSize", "SemiFontSizeHeader6"),
- new("FontSize", "SemiFontSizeHeader5"),
- new("FontSize", "SemiFontSizeHeader4"),
- new("FontSize", "SemiFontSizeHeader3"),
- new("FontSize", "SemiFontSizeHeader2"),
- new("FontSize", "SemiFontSizeHeader1"),
- new("FontWeight", "SemiFontWeightLight"),
- new("FontWeight", "SemiFontWeightRegular"),
- new("FontWeight", "SemiFontWeightBold"),
- new("FontFamily", "SemiFontFamilyRegular"),
- ];
-}
-
-public class VariableItem()
-{
- public string? Category { get; set; }
- public string? ResourceKey { get; set; }
- public Type? Type { get; set; }
- public string? Value { get; set; }
- public string? Description { get; set; }
-
- public VariableItem(string category, string resourceKey, string description = "") : this()
- {
- Category = category;
- ResourceKey = resourceKey;
- Description = description;
- }
-
- public string CopyText =>
- $"""
-
- """;
-}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Views/MainView.axaml b/demo/Semi.Avalonia.Demo/Views/MainView.axaml
index fa86d0c..76bc227 100644
--- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml
+++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml
@@ -116,15 +116,15 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -134,12 +134,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index 50a3aee..7b61b49 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -1,7 +1,7 @@
true
- 11.3.7
+ 12.0.999-cibuild0061987-alpha
11.3.7
@@ -9,5 +9,6 @@
+
\ No newline at end of file
diff --git a/src/Semi.Avalonia.ColorPicker/Semi.Avalonia.ColorPicker.csproj b/src/Semi.Avalonia.ColorPicker/Semi.Avalonia.ColorPicker.csproj
index 0c0f4e7..291d258 100644
--- a/src/Semi.Avalonia.ColorPicker/Semi.Avalonia.ColorPicker.csproj
+++ b/src/Semi.Avalonia.ColorPicker/Semi.Avalonia.ColorPicker.csproj
@@ -1,7 +1,7 @@
- netstandard2.0;net6.0;net8.0
+ net8.0
11.3.7.2
Update to Semi.Avalonia.ColorPicker 11.3.7.2
Semi.Avalonia.ColorPicker
diff --git a/src/Semi.Avalonia/Semi.Avalonia.csproj b/src/Semi.Avalonia/Semi.Avalonia.csproj
index bd37807..9121840 100644
--- a/src/Semi.Avalonia/Semi.Avalonia.csproj
+++ b/src/Semi.Avalonia/Semi.Avalonia.csproj
@@ -1,7 +1,7 @@
- netstandard2.0;net6.0;net8.0
+ net8.0
11.3.7.2
Update to Semi.Avalonia 11.3.7.2
Semi.Avalonia
@@ -9,6 +9,7 @@
+