diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 19412f5b8..284094d96 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -21,7 +21,7 @@ jobs:
with:
dotnet-version: '8.0.x'
include-prerelease: true
-
+
- name: Build
shell: pwsh
run: |
diff --git a/.gitignore b/.gitignore
index 903f36f41..42c130db0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,9 @@ packages/
build/*
!build/build.cake
!build/build*.nuspec
+!build/build.Lang.template
!build/create_lang_nuspec_file.py
+!build/create_nupkg_file.ps1
!build/build.ps1
!build/LICENSE
!build/icon.png
diff --git a/LICENSE b/LICENSE
index 0f3d16f74..fce637b7b 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2018-2023 HandyOrg
+Copyright (c) 2018-2024 HandyOrg
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README-cn.md b/README-cn.md
index ed14e2205..8512aee05 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -25,7 +25,7 @@
-
+
@@ -92,6 +92,11 @@ HandyControl 项目已加入 [dotNET China](https://gitee.com/dotnetchina) 组
+
+
+
+
+
## 赞助者
diff --git a/README.md b/README.md
index 9b7ab7e98..34713d331 100644
--- a/README.md
+++ b/README.md
@@ -66,6 +66,11 @@ This project is based on [HandyControl](https://github.com/handyOrg/HandyControl
+
+
+
+
+
## Backers
diff --git a/build/LICENSE b/build/LICENSE
index 0f3d16f74..fce637b7b 100644
--- a/build/LICENSE
+++ b/build/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2018-2023 HandyOrg
+Copyright (c) 2018-2024 HandyOrg
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/build/build-for-myget.nuspec b/build/build-for-myget.nuspec
index 24a3d76c7..95cf65c20 100644
--- a/build/build-for-myget.nuspec
+++ b/build/build-for-myget.nuspec
@@ -10,7 +10,7 @@
https://raw.githubusercontent.com/ghost1372/HandyControls/develop/LICENSE
https://github.com/ghost1372/HandyControls
Contains some simple and commonly used WPF controls based on HandyControl
- Copyright 2018-2023
+ Copyright 2018-2024
wpf wpf-ui style styles theme xaml control csharp relativepanel flipclock skin datagrid menu persian calendar gif togglebutton datagrid wpf-controls component cardview navigation dark-theme color-picker notification
@@ -30,6 +30,7 @@
+
@@ -231,6 +232,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/build.Lang.ca-ES.nuspec b/build/build.Lang.ca-ES.nuspec
index f7e395f2d..d0936ffe6 100644
--- a/build/build.Lang.ca-ES.nuspec
+++ b/build/build.Lang.ca-ES.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.cs.nuspec b/build/build.Lang.cs.nuspec
index 376d2e3d6..431aee9bb 100644
--- a/build/build.Lang.cs.nuspec
+++ b/build/build.Lang.cs.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.en.nuspec b/build/build.Lang.en.nuspec
index f9f3c221f..a6755b501 100644
--- a/build/build.Lang.en.nuspec
+++ b/build/build.Lang.en.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.es.nuspec b/build/build.Lang.es.nuspec
index ba7ee7f74..5cd6cba47 100644
--- a/build/build.Lang.es.nuspec
+++ b/build/build.Lang.es.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.fa.nuspec b/build/build.Lang.fa.nuspec
index d83818c9b..5165e6bfe 100644
--- a/build/build.Lang.fa.nuspec
+++ b/build/build.Lang.fa.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.fr.nuspec b/build/build.Lang.fr.nuspec
index a5f59c0ca..3ba6fcbdb 100644
--- a/build/build.Lang.fr.nuspec
+++ b/build/build.Lang.fr.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.ja.nuspec b/build/build.Lang.ja.nuspec
index c269e81bc..6e22161ee 100644
--- a/build/build.Lang.ja.nuspec
+++ b/build/build.Lang.ja.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.ko-KR.nuspec b/build/build.Lang.ko-KR.nuspec
index e2010d8e2..37fdd8de3 100644
--- a/build/build.Lang.ko-KR.nuspec
+++ b/build/build.Lang.ko-KR.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.pl.nuspec b/build/build.Lang.pl.nuspec
index 6066bceed..17c9e14b0 100644
--- a/build/build.Lang.pl.nuspec
+++ b/build/build.Lang.pl.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.pt-BR.nuspec b/build/build.Lang.pt-BR.nuspec
index 2cb0c441b..b1153d782 100644
--- a/build/build.Lang.pt-BR.nuspec
+++ b/build/build.Lang.pt-BR.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.ru.nuspec b/build/build.Lang.ru.nuspec
index d234ed623..5169a90ac 100644
--- a/build/build.Lang.ru.nuspec
+++ b/build/build.Lang.ru.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.template.nuspec b/build/build.Lang.template
similarity index 93%
rename from build/build.Lang.template.nuspec
rename to build/build.Lang.template
index 15777b68a..4863ba700 100644
--- a/build/build.Lang.template.nuspec
+++ b/build/build.Lang.template
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.Lang.tr.nuspec b/build/build.Lang.tr.nuspec
index 3c4847b7c..e22868cdb 100644
--- a/build/build.Lang.tr.nuspec
+++ b/build/build.Lang.tr.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -51,6 +52,7 @@
+
diff --git a/build/build.cake b/build/build.cake
index c9c534c31..599f985c1 100644
--- a/build/build.cake
+++ b/build/build.cake
@@ -35,7 +35,8 @@ Task("Build")
"netcoreapp3.1",
"net5.0-windows",
"net6.0-windows",
- "net7.0-windows"
+ "net7.0-windows",
+ "net8.0-windows"
};
foreach (var framework in frameworkList)
diff --git a/build/build.nuspec b/build/build.nuspec
index bfc9e9d9b..153a7d241 100644
--- a/build/build.nuspec
+++ b/build/build.nuspec
@@ -12,9 +12,9 @@
https://github.com/HandyOrg/HandyControl
Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
WPF C# Control
-
+
@@ -33,6 +33,7 @@
+
@@ -84,6 +85,10 @@
+
+
+
+
diff --git a/build/create_lang_nuspec_file.py b/build/create_lang_nuspec_file.py
index d8c50ea06..91372f2e4 100644
--- a/build/create_lang_nuspec_file.py
+++ b/build/create_lang_nuspec_file.py
@@ -2,7 +2,7 @@
def main():
- with open('build.Lang.template.nuspec', 'r', encoding='utf-8') as template_file:
+ with open('build.Lang.template', 'r', encoding='utf-8') as template_file:
template_content = template_file.read()
resx_file_folder = Path('../src/Shared/HandyControl_Shared/Properties/Langs')
diff --git a/build/create_nupkg_file.ps1 b/build/create_nupkg_file.ps1
new file mode 100644
index 000000000..d6029abb2
--- /dev/null
+++ b/build/create_nupkg_file.ps1
@@ -0,0 +1,4 @@
+./tools/nuget pack build.nuspec -Symbols -SymbolPackageFormat snupkg
+Get-ChildItem -Path ./build.Lang.*.nuspec | ForEach-Object {
+ ./tools/nuget pack $_
+}
diff --git a/src/Avalonia/Directory.Build.props b/src/Avalonia/Directory.Build.props
new file mode 100644
index 000000000..b7d1f090c
--- /dev/null
+++ b/src/Avalonia/Directory.Build.props
@@ -0,0 +1,6 @@
+
+
+ enable
+ 11.0.6
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/App.axaml b/src/Avalonia/HandyControlDemo_Avalonia/App.axaml
new file mode 100644
index 000000000..6ecedd565
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/App.axaml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/App.axaml.cs b/src/Avalonia/HandyControlDemo_Avalonia/App.axaml.cs
new file mode 100644
index 000000000..f48db2b30
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/App.axaml.cs
@@ -0,0 +1,28 @@
+using Avalonia;
+using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Data.Core.Plugins;
+using Avalonia.Markup.Xaml;
+
+
+namespace HandyControlDemo;
+
+// ReSharper disable once PartialTypeWithSinglePart
+public partial class App : Application
+{
+ public override void Initialize()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public override void OnFrameworkInitializationCompleted()
+ {
+ BindingPlugins.DataValidators.RemoveAt(0);
+
+ if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
+ {
+ desktop.MainWindow = new MainWindow();
+ }
+
+ base.OnFrameworkInitializationCompleted();
+ }
+}
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/HandyControlDemo_Avalonia.csproj b/src/Avalonia/HandyControlDemo_Avalonia/HandyControlDemo_Avalonia.csproj
new file mode 100644
index 000000000..a3a2cc373
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/HandyControlDemo_Avalonia.csproj
@@ -0,0 +1,41 @@
+
+
+ WinExe
+
+ net7.0
+ enable
+ true
+ app.manifest
+ HandyControlDemo
+ HandyControlDemo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ App.axaml
+
+
+ ButtonDemoCtrl.axaml
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/MainWindow.axaml b/src/Avalonia/HandyControlDemo_Avalonia/MainWindow.axaml
new file mode 100644
index 000000000..ddd9e5391
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/MainWindow.axaml
@@ -0,0 +1,15 @@
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/MainWindow.axaml.cs b/src/Avalonia/HandyControlDemo_Avalonia/MainWindow.axaml.cs
new file mode 100644
index 000000000..8edecb99c
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/MainWindow.axaml.cs
@@ -0,0 +1,11 @@
+using Avalonia.Controls;
+
+namespace HandyControlDemo;
+
+public partial class MainWindow : Window
+{
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+}
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Program.cs b/src/Avalonia/HandyControlDemo_Avalonia/Program.cs
new file mode 100644
index 000000000..3b0751f82
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/Program.cs
@@ -0,0 +1,16 @@
+using System;
+using Avalonia;
+
+namespace HandyControlDemo;
+
+public class Program
+{
+ [STAThread]
+ public static void Main(string[] args) => BuildAvaloniaApp()
+ .StartWithClassicDesktopLifetime(args);
+
+ public static AppBuilder BuildAvaloniaApp()
+ => AppBuilder.Configure()
+ .UsePlatformDetect()
+ .LogToTrace();
+}
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Resources/Img/cloud.png b/src/Avalonia/HandyControlDemo_Avalonia/Resources/Img/cloud.png
new file mode 100644
index 000000000..f8b36fb42
Binary files /dev/null and b/src/Avalonia/HandyControlDemo_Avalonia/Resources/Img/cloud.png differ
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Resources/Img/icon.ico b/src/Avalonia/HandyControlDemo_Avalonia/Resources/Img/icon.ico
new file mode 100644
index 000000000..719edf88b
Binary files /dev/null and b/src/Avalonia/HandyControlDemo_Avalonia/Resources/Img/icon.ico differ
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Resources/Themes/Basic/Basic.axaml b/src/Avalonia/HandyControlDemo_Avalonia/Resources/Themes/Basic/Basic.axaml
new file mode 100644
index 000000000..9c7bb5c37
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/Resources/Themes/Basic/Basic.axaml
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Resources/Themes/Basic/Brushes.axaml b/src/Avalonia/HandyControlDemo_Avalonia/Resources/Themes/Basic/Brushes.axaml
new file mode 100644
index 000000000..e7d9b2b54
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/Resources/Themes/Basic/Brushes.axaml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Resources/Themes/Theme.axaml b/src/Avalonia/HandyControlDemo_Avalonia/Resources/Themes/Theme.axaml
new file mode 100644
index 000000000..12c62a092
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/Resources/Themes/Theme.axaml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Views/Main/MainWindowContent.axaml b/src/Avalonia/HandyControlDemo_Avalonia/Views/Main/MainWindowContent.axaml
new file mode 100644
index 000000000..7d3a9fe1c
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/Views/Main/MainWindowContent.axaml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Views/Main/MainWindowContent.axaml.cs b/src/Avalonia/HandyControlDemo_Avalonia/Views/Main/MainWindowContent.axaml.cs
new file mode 100644
index 000000000..2eee6d7d5
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/Views/Main/MainWindowContent.axaml.cs
@@ -0,0 +1,11 @@
+using Avalonia.Controls;
+
+namespace HandyControlDemo.Views;
+
+public partial class MainWindowContent : UserControl
+{
+ public MainWindowContent()
+ {
+ InitializeComponent();
+ }
+}
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Views/Styles/ButtonDemoCtrl.axaml b/src/Avalonia/HandyControlDemo_Avalonia/Views/Styles/ButtonDemoCtrl.axaml
new file mode 100644
index 000000000..18c2736cc
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/Views/Styles/ButtonDemoCtrl.axaml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Views/Styles/ButtonDemoCtrl.axaml.cs b/src/Avalonia/HandyControlDemo_Avalonia/Views/Styles/ButtonDemoCtrl.axaml.cs
new file mode 100644
index 000000000..e9666219a
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/Views/Styles/ButtonDemoCtrl.axaml.cs
@@ -0,0 +1,11 @@
+using Avalonia.Controls;
+
+namespace HandyControlDemo.Views;
+
+public partial class ButtonDemoCtrl : UserControl
+{
+ public ButtonDemoCtrl()
+ {
+ InitializeComponent();
+ }
+}
diff --git a/src/Avalonia/HandyControlDemo_Avalonia/app.manifest b/src/Avalonia/HandyControlDemo_Avalonia/app.manifest
new file mode 100644
index 000000000..ceddb7303
--- /dev/null
+++ b/src/Avalonia/HandyControlDemo_Avalonia/app.manifest
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/HandyControl_Avalonia.csproj b/src/Avalonia/HandyControl_Avalonia/HandyControl_Avalonia.csproj
new file mode 100644
index 000000000..21072d41e
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/HandyControl_Avalonia.csproj
@@ -0,0 +1,13 @@
+
+
+ net7.0
+ enable
+ latest
+ HandyControl
+ HandyControl
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Properties/AssemblyInfo.cs b/src/Avalonia/HandyControl_Avalonia/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..ddc6490a6
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Properties/AssemblyInfo.cs
@@ -0,0 +1,4 @@
+using Avalonia.Metadata;
+
+[assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Themes")]
+[assembly: XmlnsPrefix("https://handyorg.github.io/handycontrol", "hc")]
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Brushes.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Brushes.axaml
new file mode 100644
index 000000000..956fe81de
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Brushes.axaml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Colors.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Colors.axaml
new file mode 100644
index 000000000..de2bed2b7
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Colors.axaml
@@ -0,0 +1,98 @@
+
+
+
+ #f3fbff
+ #326cf3
+ #326cf3
+
+ #fff6f7
+ #db3340
+ #db3340
+
+ #fffcf5
+ #e9af20
+ #e9af20
+
+ #f1fdff
+ #00bcd4
+ #00bcd4
+
+ #f3fff6
+ #2db84d
+ #2db84d
+
+ #212121
+ #757575
+ #bdbdbd
+ #212121
+ White
+
+ #e0e0e0
+ #757575
+ #eeeeee
+ #ffffff
+ #eeeeee
+ White
+ #326cf3
+ #326cf3
+
+ White
+ #f5f5f5
+
+ #f8491e
+ #f8491e
+
+ #20000000
+ #40000000
+ 2583691263
+
+
+ #044289
+ #326cf3
+ #326cf3
+
+ #450c0f
+ #db3340
+ #db3340
+
+ #4c3a0f
+ #e9af20
+ #e9af20
+
+ #003c44
+ #00bcd4
+ #00bcd4
+
+ #113a1b
+ #2db84d
+ #2db84d
+
+ White
+ #757575
+ #3f3f46
+ #212121
+ White
+
+ #3f3f46
+ #555555
+ #eeeeee
+ #1c1c1c
+ #2d2d30
+ #424242
+ #326cf3
+ #326cf3
+
+ #686868
+ #686868
+
+ #ff5722
+ #d43f3a
+
+ #40000000
+ #40000000
+ 2583691263
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Effects.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Effects.axaml
new file mode 100644
index 000000000..2a86cd655
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Effects.axaml
@@ -0,0 +1,13 @@
+
+
+ #88000000
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Sizes.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Sizes.axaml
new file mode 100644
index 000000000..f1717abfa
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Basic/Sizes.axaml
@@ -0,0 +1,9 @@
+
+ 28
+ 20
+ 10,5
+ 8,0
+ 4
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Button.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Button.axaml
new file mode 100644
index 000000000..dfb8ebed4
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Button.axaml
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ContentControl.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ContentControl.axaml
new file mode 100644
index 000000000..229114f9a
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ContentControl.axaml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Style.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Style.axaml
new file mode 100644
index 000000000..c3b84f020
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Style.axaml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/UserControl.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/UserControl.axaml
new file mode 100644
index 000000000..619491302
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/UserControl.axaml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Window.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Window.axaml
new file mode 100644
index 000000000..9de37a332
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/Window.axaml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml
new file mode 100644
index 000000000..13ee12e2a
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml.cs b/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml.cs
new file mode 100644
index 000000000..c819edeb8
--- /dev/null
+++ b/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml.cs
@@ -0,0 +1,14 @@
+using System;
+using Avalonia.Markup.Xaml;
+using Avalonia.Styling;
+
+namespace HandyControl.Themes;
+
+// ReSharper disable once PartialTypeWithSinglePart
+public partial class Theme : Styles
+{
+ public Theme(IServiceProvider? sp = null)
+ {
+ AvaloniaXamlLoader.Load(sp, this);
+ }
+}
diff --git a/src/Directory.Build.Props b/src/Directory.Build.Props
index 9c09fa449..73ba8c3b1 100644
--- a/src/Directory.Build.Props
+++ b/src/Directory.Build.Props
@@ -1,11 +1,11 @@
-
+
true
3.5.0.0
3.5.0.0
3.5.0.0
latest
- Copyright © HandyOrg 2018-2023
+ Copyright © HandyOrg 2018-2024
HandyOrg
https://github.com/HandyOrg/HandyControl
https://handyorg.github.io/
diff --git a/src/HandyControl.sln b/src/HandyControl.sln
index bdeea6fca..c7af0484b 100644
--- a/src/HandyControl.sln
+++ b/src/HandyControl.sln
@@ -36,26 +36,13 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "System.Windows.Interactivit
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Microsoft.Expression.Interactions", "Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.shproj", "{3531857C-28FC-4E0F-82D9-BFBB70740E04}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Avalonia", "Avalonia", "{A490C3E9-0CC2-46EE-BE9A-95D3DCBF211D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControl_Avalonia", "Avalonia\HandyControl_Avalonia\HandyControl_Avalonia.csproj", "{34D39209-C744-41AA-91D6-C15C68E2A1D9}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControlDemo_Avalonia", "Avalonia\HandyControlDemo_Avalonia\HandyControlDemo_Avalonia.csproj", "{99CCAF7C-F9A1-4C54-A5F0-B231E7F7AE66}"
+EndProject
Global
- GlobalSection(SharedMSBuildProjectFiles) = preSolution
- Shared\HandyControl_Shared\HandyControl_Shared.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
- Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
- Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
- Shared\Microsoft.Windows.Shell\Microsoft.Windows.Shell.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
- Shared\System.Windows.Interactivity\System.Windows.Interactivity.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
- Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.projitems*{3531857c-28fc-4e0f-82d9-bfbb70740e04}*SharedItemsImports = 13
- Shared\System.Windows.Interactivity\System.Windows.Interactivity.projitems*{6f0c9cff-2269-46a7-9664-478354c582a4}*SharedItemsImports = 13
- Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.projitems*{9a7b52e6-94bb-4e7e-bb6a-7cf6761b79a7}*SharedItemsImports = 5
- Shared\HandyControl_Shared\HandyControl_Shared.projitems*{aac11083-faca-405d-9197-5c1212d65656}*SharedItemsImports = 13
- Shared\Microsoft.Windows.Shell\Microsoft.Windows.Shell.projitems*{bbe51380-8b21-49ff-9cfc-b29447a40999}*SharedItemsImports = 13
- Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.projitems*{c4694269-c9b8-45d5-87f8-d0088c532510}*SharedItemsImports = 13
- Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.projitems*{d8ae88f8-c36b-4d10-a7f9-22ffcfba5231}*SharedItemsImports = 5
- Shared\HandyControl_Shared\HandyControl_Shared.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
- Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
- Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
- Shared\System.Windows.Interactivity\System.Windows.Interactivity.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
- Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.projitems*{e5dc7c25-6293-4660-b5fb-186496386b90}*SharedItemsImports = 13
- EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug-Net40|Any CPU = Debug-Net40|Any CPU
@@ -95,6 +82,18 @@ Global
{D8A4748C-0500-4F63-BC47-3506658C68F7}.Release|Any CPU.Build.0 = Release|Any CPU
{D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net40|Any CPU.ActiveCfg = Release|Any CPU
{D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net40|Any CPU.Build.0 = Release|Any CPU
+ {34D39209-C744-41AA-91D6-C15C68E2A1D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {34D39209-C744-41AA-91D6-C15C68E2A1D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {34D39209-C744-41AA-91D6-C15C68E2A1D9}.Debug-Net40|Any CPU.ActiveCfg = Debug|Any CPU
+ {34D39209-C744-41AA-91D6-C15C68E2A1D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {34D39209-C744-41AA-91D6-C15C68E2A1D9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {34D39209-C744-41AA-91D6-C15C68E2A1D9}.Release-Net40|Any CPU.ActiveCfg = Release|Any CPU
+ {99CCAF7C-F9A1-4C54-A5F0-B231E7F7AE66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {99CCAF7C-F9A1-4C54-A5F0-B231E7F7AE66}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {99CCAF7C-F9A1-4C54-A5F0-B231E7F7AE66}.Debug-Net40|Any CPU.ActiveCfg = Debug|Any CPU
+ {99CCAF7C-F9A1-4C54-A5F0-B231E7F7AE66}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {99CCAF7C-F9A1-4C54-A5F0-B231E7F7AE66}.Release|Any CPU.Build.0 = Release|Any CPU
+ {99CCAF7C-F9A1-4C54-A5F0-B231E7F7AE66}.Release-Net40|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -111,8 +110,29 @@ Global
{E5DC7C25-6293-4660-B5FB-186496386B90} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897}
{6F0C9CFF-2269-46A7-9664-478354C582A4} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897}
{3531857C-28FC-4E0F-82D9-BFBB70740E04} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897}
+ {34D39209-C744-41AA-91D6-C15C68E2A1D9} = {A490C3E9-0CC2-46EE-BE9A-95D3DCBF211D}
+ {99CCAF7C-F9A1-4C54-A5F0-B231E7F7AE66} = {A490C3E9-0CC2-46EE-BE9A-95D3DCBF211D}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D4636382-1A18-4079-A3E7-054DD970F179}
EndGlobalSection
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ Shared\HandyControl_Shared\HandyControl_Shared.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
+ Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
+ Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
+ Shared\Microsoft.Windows.Shell\Microsoft.Windows.Shell.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
+ Shared\System.Windows.Interactivity\System.Windows.Interactivity.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
+ Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.projitems*{3531857c-28fc-4e0f-82d9-bfbb70740e04}*SharedItemsImports = 13
+ Shared\System.Windows.Interactivity\System.Windows.Interactivity.projitems*{6f0c9cff-2269-46a7-9664-478354c582a4}*SharedItemsImports = 13
+ Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.projitems*{9a7b52e6-94bb-4e7e-bb6a-7cf6761b79a7}*SharedItemsImports = 5
+ Shared\HandyControl_Shared\HandyControl_Shared.projitems*{aac11083-faca-405d-9197-5c1212d65656}*SharedItemsImports = 13
+ Shared\Microsoft.Windows.Shell\Microsoft.Windows.Shell.projitems*{bbe51380-8b21-49ff-9cfc-b29447a40999}*SharedItemsImports = 13
+ Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.projitems*{c4694269-c9b8-45d5-87f8-d0088c532510}*SharedItemsImports = 13
+ Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.projitems*{d8ae88f8-c36b-4d10-a7f9-22ffcfba5231}*SharedItemsImports = 5
+ Shared\HandyControl_Shared\HandyControl_Shared.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
+ Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
+ Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
+ Shared\System.Windows.Interactivity\System.Windows.Interactivity.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
+ Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.projitems*{e5dc7c25-6293-4660-b5fb-186496386b90}*SharedItemsImports = 13
+ EndGlobalSection
EndGlobal
diff --git a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
index 6b412450c..8b15f7b07 100644
--- a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
+++ b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
@@ -320,6 +320,7 @@
if not exist Langs md Langs
+ rd /s /q Langs\cs
rd /s /q Langs\en
rd /s /q Langs\es
rd /s /q Langs\fa
@@ -331,6 +332,7 @@
rd /s /q Langs\ru
rd /s /q Langs\tr
rd /s /q Langs\ca-Es
+ move cs Langs
move en Langs
move es Langs
move fa Langs
diff --git a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
index b2cee7b79..ca398c8bd 100644
--- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
@@ -322,6 +322,7 @@
if not exist Langs md Langs
+ rd /s /q Langs\cs
rd /s /q Langs\en
rd /s /q Langs\es
rd /s /q Langs\fa
@@ -333,6 +334,7 @@
rd /s /q Langs\ru
rd /s /q Langs\tr
rd /s /q Langs\ca-Es
+ move cs Langs
move en Langs
move es Langs
move fa Langs
diff --git a/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj b/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
index ee7c6d254..1b8cd6719 100644
--- a/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
+++ b/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
@@ -3,7 +3,7 @@
true
HandyControlDemoCode
HandyControlDemoCode
- netcoreapp3.0;netcoreapp3.1;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net481;net5.0-windows;net6.0-windows;net7.0-windows
+ netcoreapp3.0;netcoreapp3.1;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net481;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows
MSB3026;MSB3061
NETSDK1138
diff --git a/src/Shared/HandyControlDemo_Shared/Tools/Helper/VersionHelper.cs b/src/Shared/HandyControlDemo_Shared/Tools/Helper/VersionHelper.cs
index d6cde51bf..15740023b 100644
--- a/src/Shared/HandyControlDemo_Shared/Tools/Helper/VersionHelper.cs
+++ b/src/Shared/HandyControlDemo_Shared/Tools/Helper/VersionHelper.cs
@@ -38,6 +38,8 @@ internal static string GetVersion()
var netVersion = ".NET 6.0";
#elif NET7_0
var netVersion = ".NET 7.0";
+#elif NET8_0
+ var netVersion = ".NET 8.0";
#elif NETCOREAPP3_0
var netVersion = ".NET CORE 3.0";
#elif NETCOREAPP3_1
diff --git a/src/Shared/HandyControl_Shared/Controls/StepBar/StepBar.cs b/src/Shared/HandyControl_Shared/Controls/StepBar/StepBar.cs
index 2293ef6f6..3c76fae2c 100644
--- a/src/Shared/HandyControl_Shared/Controls/StepBar/StepBar.cs
+++ b/src/Shared/HandyControl_Shared/Controls/StepBar/StepBar.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;