diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 77420a4b..d9212433 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,16 +1,14 @@
-name: build
-
on: [push, pull_request]
jobs:
build:
runs-on: windows-latest
steps:
- - name: Checkout
+ - name: checkout
uses: actions/checkout@master
- - name: Build Net_40
- run: dotnet build src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj -p:Configuration=Release-Net40
-
- - name: Build Net_GE45
- run: dotnet build src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj -p:Configuration=Release
+ - name: build
+ shell: pwsh
+ run: |
+ cd build
+ .\build.ps1
diff --git a/.github/workflows/push-to-myget.yml b/.github/workflows/push-to-myget.yml
new file mode 100644
index 00000000..1d100f37
--- /dev/null
+++ b/.github/workflows/push-to-myget.yml
@@ -0,0 +1,22 @@
+on: workflow_dispatch
+
+jobs:
+ push-to-myget:
+ runs-on: windows-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@master
+
+ - name: setup nuget.exe
+ uses: NuGet/setup-nuget@v1.0.5
+
+ - name: build and push
+ shell: pwsh
+ run: |
+ cd build
+ .\build.ps1
+ nuget pack build-for-myget.nuspec -version 3.2.0-beta.${env:GITHUB_RUN_NUMBER}
+ $nupkgName = @(gci *.nupkg)[0].Name
+ $mygetSourcePath = "https://www.myget.org/F/handycontrol"
+ nuget setApiKey ${{ secrets.MYGETTOKEN }} -Source $mygetSourcePath
+ nuget push $nupkgName -Source $mygetSourcePath
diff --git a/.gitignore b/.gitignore
index 73a63a6b..9b3fa82f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@ packages/
build/*
!build/build.cake
!build/build.nuspec
+!build/build-for-myget.nuspec
!build/build.ps1
!build/tools/
build/tools/*
diff --git a/Installers/VS2019/HandyControl_VS2019.sln b/Installers/VS2019/HandyControl_VS2019.sln
index 2c1629ff..78ca7aa9 100644
--- a/Installers/VS2019/HandyControl_VS2019.sln
+++ b/Installers/VS2019/HandyControl_VS2019.sln
@@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfApp", "WpfApp\WpfApp.csp
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfCoreApp", "WpfCoreApp\WpfCoreApp.csproj", "{2F6E9FB8-F579-40CF-A151-57F281F08E1B}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Project Templates", "Project Templates", "{26BC7FA1-50F7-46C7-84FE-0D8ABAC47E07}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -31,6 +33,10 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {83C70EB1-3A3F-4812-B86C-C7D1936699EB} = {26BC7FA1-50F7-46C7-84FE-0D8ABAC47E07}
+ {2F6E9FB8-F579-40CF-A151-57F281F08E1B} = {26BC7FA1-50F7-46C7-84FE-0D8ABAC47E07}
+ EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A7F567D2-5FA3-4E17-A8A8-CDAFC217BFF5}
EndGlobalSection
diff --git a/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019.csproj b/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019.csproj
index ba720bad..633bf020 100644
--- a/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019.csproj
+++ b/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019.csproj
@@ -16,7 +16,7 @@
HandyControl_VS2019
HandyControl_VS2019
v4.7.2
- true
+ false
true
true
false
@@ -46,7 +46,6 @@
-
@@ -57,8 +56,13 @@
-
-
+
+ compile; build; native; contentfiles; analyzers; buildtransitive
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
diff --git a/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019Package.cs b/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019Package.cs
deleted file mode 100644
index 10e0ebb6..00000000
--- a/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019Package.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-using System.Threading;
-using Microsoft.VisualStudio.Shell;
-using Task = System.Threading.Tasks.Task;
-
-namespace HandyControl_VS2019
-{
- ///
- /// This is the class that implements the package exposed by this assembly.
- ///
- ///
- ///
- /// The minimum requirement for a class to be considered a valid package for Visual Studio
- /// is to implement the IVsPackage interface and register itself with the shell.
- /// This package uses the helper classes defined inside the Managed Package Framework (MPF)
- /// to do it: it derives from the Package class that provides the implementation of the
- /// IVsPackage interface and uses the registration attributes defined in the framework to
- /// register itself and its components with the shell. These attributes tell the pkgdef creation
- /// utility what data to put into .pkgdef file.
- ///
- ///
- /// To get loaded into VS, the package must be referred by <Asset Type="Microsoft.VisualStudio.VsPackage" ...> in .vsixmanifest file.
- ///
- ///
- [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
- [Guid(PackageGuidString)]
- public sealed class HandyControl_VS2019Package : AsyncPackage
- {
- ///
- /// HandyControl_VS2019Package GUID string.
- ///
- public const string PackageGuidString = "157ef242-83b5-47d0-8f2f-e21dc8308151";
-
- #region Package Members
-
- ///
- /// Initialization of the package; this method is called right after the package is sited, so this is the place
- /// where you can put all the initialization code that rely on services provided by VisualStudio.
- ///
- /// A cancellation token to monitor for initialization cancellation, which can occur when VS is shutting down.
- /// A provider for progress updates.
- /// A task representing the async work of package initialization, or an already completed task if there is none. Do not return null from this method.
- protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress progress)
- {
- // When initialized asynchronously, the current thread may be a background thread at this point.
- // Do any initialization that requires the UI thread after switching to the UI thread.
- await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);
- }
-
- #endregion
- }
-}
diff --git a/Installers/VS2019/HandyControl_VS2019/License.txt b/Installers/VS2019/HandyControl_VS2019/License.txt
index 0c1c18de..ce89800c 100644
--- a/Installers/VS2019/HandyControl_VS2019/License.txt
+++ b/Installers/VS2019/HandyControl_VS2019/License.txt
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2018-2020 HandyOrg
+Copyright (c) 2018-2021 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
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/Installers/VS2019/HandyControl_VS2019/Properties/AssemblyInfo.cs b/Installers/VS2019/HandyControl_VS2019/Properties/AssemblyInfo.cs
index 94d87828..c8e705aa 100644
--- a/Installers/VS2019/HandyControl_VS2019/Properties/AssemblyInfo.cs
+++ b/Installers/VS2019/HandyControl_VS2019/Properties/AssemblyInfo.cs
@@ -6,9 +6,9 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HandyControl_VS2019")]
-[assembly: AssemblyCopyright("Copyright © HandyOrg 2018-2020")]
+[assembly: AssemblyCopyright("Copyright © HandyOrg 2018-2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
-[assembly: AssemblyVersion("2.1.0")]
-[assembly: AssemblyFileVersion("2.1.0")]
\ No newline at end of file
+[assembly: AssemblyVersion("3.1.0")]
+[assembly: AssemblyFileVersion("3.1.0")]
diff --git a/Installers/VS2019/HandyControl_VS2019/source.extension.vsixmanifest b/Installers/VS2019/HandyControl_VS2019/source.extension.vsixmanifest
index 74e40f35..37afe1af 100644
--- a/Installers/VS2019/HandyControl_VS2019/source.extension.vsixmanifest
+++ b/Installers/VS2019/HandyControl_VS2019/source.extension.vsixmanifest
@@ -1,7 +1,7 @@
-
+
HandyControl for VS2019
This VSIX Project will help people initialize a HandyControl project.
https://handyorg.github.io/handycontrol
@@ -21,10 +21,9 @@
-
+
-
diff --git a/Installers/VS2019/WpfApp/AssemblyInfo.cs b/Installers/VS2019/WpfApp/AssemblyInfo.cs
index 9eac2dc2..a3e3ceb3 100644
--- a/Installers/VS2019/WpfApp/AssemblyInfo.cs
+++ b/Installers/VS2019/WpfApp/AssemblyInfo.cs
@@ -7,7 +7,7 @@ using System.Windows;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("$safeprojectname$")]
-[assembly: AssemblyCopyright("Copyright © $username$ 2019")]
+[assembly: AssemblyCopyright("Copyright © $username$ $year$")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
diff --git a/Installers/VS2019/WpfApp/ProjectTemplate.csproj b/Installers/VS2019/WpfApp/ProjectTemplate.csproj
index d6cec36e..fda36524 100644
--- a/Installers/VS2019/WpfApp/ProjectTemplate.csproj
+++ b/Installers/VS2019/WpfApp/ProjectTemplate.csproj
@@ -8,9 +8,8 @@
WinExe
$safeprojectname$
$safeprojectname$
- v4.7.2
+ v$targetframeworkversion$
512
- {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
4
true
@@ -34,9 +33,9 @@
4
-
- ..\packages\HandyControl.2.5.0.1\lib\net47\HandyControl.dll
-
+
+
+
4.0
@@ -68,8 +67,5 @@
Code
-
-
-
-
\ No newline at end of file
+
diff --git a/Installers/VS2019/WpfApp/Properties/AssemblyInfo.cs b/Installers/VS2019/WpfApp/Properties/AssemblyInfo.cs
index e2fda6dc..615ae4ce 100644
--- a/Installers/VS2019/WpfApp/Properties/AssemblyInfo.cs
+++ b/Installers/VS2019/WpfApp/Properties/AssemblyInfo.cs
@@ -6,9 +6,9 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HandyControl_VS2019_WpfApp")]
-[assembly: AssemblyCopyright("Copyright © HandyOrg 2018-2020")]
+[assembly: AssemblyCopyright("Copyright © HandyOrg 2018-2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
-[assembly: AssemblyVersion("2.5.0")]
-[assembly: AssemblyFileVersion("2.5.0")]
+[assembly: AssemblyVersion("3.1.0")]
+[assembly: AssemblyFileVersion("3.1.0")]
diff --git a/Installers/VS2019/WpfApp/WpfApp.csproj b/Installers/VS2019/WpfApp/WpfApp.csproj
index 5c42f1ff..03c2fe4e 100644
--- a/Installers/VS2019/WpfApp/WpfApp.csproj
+++ b/Installers/VS2019/WpfApp/WpfApp.csproj
@@ -66,7 +66,6 @@
-
diff --git a/Installers/VS2019/WpfApp/WpfApp.vstemplate b/Installers/VS2019/WpfApp/WpfApp.vstemplate
index 69f0d286..34f4c6fb 100644
--- a/Installers/VS2019/WpfApp/WpfApp.vstemplate
+++ b/Installers/VS2019/WpfApp/WpfApp.vstemplate
@@ -1,29 +1,29 @@
-
- HandyControl WPF App(.NET Framework)
- Creates a HandyControl WPF App(.NET Framework)
- icon.ico
- CSharp
- 4.7
- 4.7.2
- 38e0a2df-5858-4bde-b373-7c50bc982906
- true
- HandyControlProject
- true
- csharp
- windows
- desktop
- HandyControl
-
-
-
- AssemblyInfo.cs
- App.xaml
- App.xaml.cs
- MainWindow.xaml
- MainWindow.xaml.cs
- packages.config
-
-
-
\ No newline at end of file
+
+ HandyControl WPF App (.NET Framework)
+ Creates a HandyControl WPF App (.NET Framework)
+ icon.ico
+ CSharp
+ 4.0
+ true
+ HandyControlWpfApp
+ true
+ csharp
+ windows
+ desktop
+ HandyControl
+ Enabled
+ true
+ true
+
+
+
+ AssemblyInfo.cs
+ App.xaml
+ App.xaml.cs
+ MainWindow.xaml
+ MainWindow.xaml.cs
+
+
+
diff --git a/Installers/VS2019/WpfApp/packages.config b/Installers/VS2019/WpfApp/packages.config
deleted file mode 100644
index 9e25ff12..00000000
--- a/Installers/VS2019/WpfApp/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/Installers/VS2019/WpfCoreApp/AssemblyInfo.cs b/Installers/VS2019/WpfCoreApp/AssemblyInfo.cs
new file mode 100644
index 00000000..9ef4842b
--- /dev/null
+++ b/Installers/VS2019/WpfCoreApp/AssemblyInfo.cs
@@ -0,0 +1,3 @@
+using System.Windows;
+
+[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
diff --git a/Installers/VS2019/WpfCoreApp/ProjectTemplate.csproj b/Installers/VS2019/WpfCoreApp/ProjectTemplate.csproj
index 9b17e7cd..0cf79316 100644
--- a/Installers/VS2019/WpfCoreApp/ProjectTemplate.csproj
+++ b/Installers/VS2019/WpfCoreApp/ProjectTemplate.csproj
@@ -1,24 +1,17 @@
+
WinExe
- netcoreapp3.0
true
- $safeprojectname$
- $safeprojectname$
- 1.0.0.0
- Debug;Release
- Copyright © $username$ 2018-2020
- 1.0.0.0
- 1.0.0.0
+ Copyright © $username$ $year$
+ netcoreapp3.0
latest
-
-
- TRACE;Core
-
-
- TRACE;Core
+ true
+ true
+ enable
-
+
-
\ No newline at end of file
+
+
diff --git a/Installers/VS2019/WpfCoreApp/Properties/AssemblyInfo.cs b/Installers/VS2019/WpfCoreApp/Properties/AssemblyInfo.cs
index 6ca08ca9..9f047401 100644
--- a/Installers/VS2019/WpfCoreApp/Properties/AssemblyInfo.cs
+++ b/Installers/VS2019/WpfCoreApp/Properties/AssemblyInfo.cs
@@ -6,9 +6,9 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HandyControl_VS2019_WpfCoreApp")]
-[assembly: AssemblyCopyright("Copyright © HandyOrg 2018-2020")]
+[assembly: AssemblyCopyright("Copyright © HandyOrg 2018-2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
-[assembly: AssemblyVersion("2.5.0")]
-[assembly: AssemblyFileVersion("2.5.0")]
+[assembly: AssemblyVersion("3.1.0")]
+[assembly: AssemblyFileVersion("3.1.0")]
diff --git a/Installers/VS2019/WpfCoreApp/WpfCoreApp.csproj b/Installers/VS2019/WpfCoreApp/WpfCoreApp.csproj
index 6a55e8df..baf227fc 100644
--- a/Installers/VS2019/WpfCoreApp/WpfCoreApp.csproj
+++ b/Installers/VS2019/WpfCoreApp/WpfCoreApp.csproj
@@ -60,6 +60,7 @@
MainWindow.xaml
+
diff --git a/Installers/VS2019/WpfCoreApp/WpfCoreApp.vstemplate b/Installers/VS2019/WpfCoreApp/WpfCoreApp.vstemplate
index 532eaeaf..9d39835d 100644
--- a/Installers/VS2019/WpfCoreApp/WpfCoreApp.vstemplate
+++ b/Installers/VS2019/WpfCoreApp/WpfCoreApp.vstemplate
@@ -1,27 +1,28 @@
-
- HandyControl WPF App(.NET Core)
- Creates a HandyControl WPF App(.NET Core)
- icon.ico
- CSharp
- true
- HandyControlProject
- true
- csharp
- windows
- desktop
- HandyControl
- Enabled
- true
- true
-
-
-
- App.xaml
- App.xaml.cs
- MainWindow.xaml
- MainWindow.xaml.cs
-
-
-
\ No newline at end of file
+
+ HandyControl WPF App (.NET Core)
+ Creates a HandyControl WPF App (.NET Core)
+ icon.ico
+ CSharp
+ true
+ HandyControlWpfCoreApp
+ true
+ csharp
+ windows
+ desktop
+ HandyControl
+ Enabled
+ true
+ true
+
+
+
+ AssemblyInfo.cs
+ App.xaml
+ App.xaml.cs
+ MainWindow.xaml
+ MainWindow.xaml.cs
+
+
+
diff --git a/README-cn.md b/README-cn.md
index 33ef3aa2..de6cc098 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -14,7 +14,10 @@
-
+
+
+
+
@@ -28,6 +31,10 @@
## 面向中国
+### 招聘
+
+百度地图,招 WPF 研发工程师,坐标上海,有意私聊 836904362@qq.com
+
### 码云
[https://gitee.com/handyorg/HandyControl/](https://gitee.com/handyorg/HandyControl/)
@@ -163,7 +170,7 @@ Step 4: Enjoy coding
## VS插件
-| [VS2019](https://marketplace.visualstudio.com/items?itemName=HandyOrg.handycontrolforvs2019) |
+| [VS2019](https://marketplace.visualstudio.com/items?itemName=HandyOrg.HandyControl) |
| ------------- |
## Star趋势
@@ -562,4 +569,4 @@ Step 4: Enjoy coding
### Brush
-
\ No newline at end of file
+
diff --git a/README.md b/README.md
index 56e2537c..ff0508a5 100644
--- a/README.md
+++ b/README.md
@@ -15,6 +15,9 @@
+
+
+
@@ -28,6 +31,10 @@
## 面向中国
+### 招聘
+
+百度地图,招 WPF 研发工程师,坐标上海,有意私聊 836904362@qq.com
+
### 码云
[https://gitee.com/handyorg/HandyControl/](https://gitee.com/handyorg/HandyControl/)
@@ -163,7 +170,7 @@ Step 4: Enjoy coding
## VSIX packages for Visual Studio
-| [VS2019](https://marketplace.visualstudio.com/items?itemName=HandyOrg.handycontrolforvs2019) |
+| [VS2019](https://marketplace.visualstudio.com/items?itemName=HandyOrg.HandyControl) |
| ------------- |
## Stargazers over time
@@ -562,4 +569,4 @@ Step 4: Enjoy coding
### Brush
-
\ No newline at end of file
+
diff --git a/build/build-for-myget.nuspec b/build/build-for-myget.nuspec
new file mode 100644
index 00000000..6f0627e0
--- /dev/null
+++ b/build/build-for-myget.nuspec
@@ -0,0 +1,206 @@
+
+
+
+ HandyControl
+ 3.1.0
+ HandyOrg
+ HandyOrg
+ HandyOrg
+ true
+ https://raw.githubusercontent.com/HandyOrg/HandyControl/master/LICENSE
+ https://github.com/NaBian/HandyControl
+ Contains some simple and commonly used WPF controls
+ Copyright © HandyOrg 2018-2021
+ WPF C# Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/build.cake b/build/build.cake
index bfd31c23..34b6f839 100644
--- a/build/build.cake
+++ b/build/build.cake
@@ -23,6 +23,34 @@ Task("Build")
OutputDirectory = "lib/net45"
};
+ var settingsNet451 = new DotNetCoreBuildSettings
+ {
+ Configuration = "Release",
+ Framework = "net451",
+ OutputDirectory = "lib/net451"
+ };
+
+ var settingsNet452 = new DotNetCoreBuildSettings
+ {
+ Configuration = "Release",
+ Framework = "net452",
+ OutputDirectory = "lib/net452"
+ };
+
+ var settingsNet46 = new DotNetCoreBuildSettings
+ {
+ Configuration = "Release",
+ Framework = "net46",
+ OutputDirectory = "lib/net46"
+ };
+
+ var settingsNet461 = new DotNetCoreBuildSettings
+ {
+ Configuration = "Release",
+ Framework = "net461",
+ OutputDirectory = "lib/net461"
+ };
+
var settingsNet462 = new DotNetCoreBuildSettings
{
Configuration = "Release",
@@ -37,6 +65,20 @@ Task("Build")
OutputDirectory = "lib/net47"
};
+ var settingsNet471 = new DotNetCoreBuildSettings
+ {
+ Configuration = "Release",
+ Framework = "net471",
+ OutputDirectory = "lib/net471"
+ };
+
+ var settingsNet472 = new DotNetCoreBuildSettings
+ {
+ Configuration = "Release",
+ Framework = "net472",
+ OutputDirectory = "lib/net472"
+ };
+
var settingsNet48 = new DotNetCoreBuildSettings
{
Configuration = "Release",
@@ -62,13 +104,19 @@ Task("Build")
{
Configuration = "Release",
Framework = "net5.0-windows",
- OutputDirectory = "lib/net5.0-windows"
+ OutputDirectory = "lib/net5.0"
};
DotNetCoreBuild("../src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj", settingsNet40);
DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsNet45);
+ DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsNet451);
+ DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsNet452);
+ DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsNet46);
+ DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsNet461);
DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsNet462);
DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsNet47);
+ DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsNet471);
+ DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsNet472);
DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsNet48);
DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsCore30);
DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settingsCore31);
diff --git a/build/build.nuspec b/build/build.nuspec
index 37542257..6c255e8d 100644
--- a/build/build.nuspec
+++ b/build/build.nuspec
@@ -2,7 +2,7 @@
HandyControl
- 3.0.0
+ 3.1.0
HandyOrg
HandyOrg
HandyOrg
@@ -10,18 +10,22 @@
LICENSE
icon.png
https://github.com/NaBian/HandyControl
- Contains some commonly used simple WPF controls
+ Contains some simple and commonly used WPF controls
Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
- Copyright © HandyOrg 2018-2020
+ Copyright © HandyOrg 2018-2021
WPF C# Control
-
-
-
+
+
+
+
+
+
+
@@ -29,79 +33,172 @@
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/tools/VisualStudioToolsManifest.xml b/build/tools/VisualStudioToolsManifest.xml
index 09561422..217bf875 100644
--- a/build/tools/VisualStudioToolsManifest.xml
+++ b/build/tools/VisualStudioToolsManifest.xml
@@ -3,6 +3,7 @@
+
@@ -28,6 +29,7 @@
+
@@ -62,17 +64,20 @@
+
+
+
diff --git a/src/Directory.Build.Props b/src/Directory.Build.Props
index 18714da4..cb6332cc 100644
--- a/src/Directory.Build.Props
+++ b/src/Directory.Build.Props
@@ -1,11 +1,13 @@
true
- 3.0.0.0
- 3.0.0.0
- 3.0.0.0
- 8.0
- Copyright © HandyOrg 2018-2020
+ 3.2.0.0
+ 3.2.0.0
+ 3.2.0.0
+ latest
+ Copyright © HandyOrg 2018-2021
HandyOrg
+ https://github.com/HandyOrg/HandyControl
+ https://handyorg.github.io/
\ No newline at end of file
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 dc9e03d7..ca67dc56 100644
--- a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
+++ b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
@@ -6,7 +6,6 @@
net40
..\..\Shared\HandyControlDemo_Shared\Resources\Img\icon.ico
0108;MSB3026;MSB3061
- true
@@ -585,11 +584,6 @@
move tr Langs
move ca-Es Langs
- Copyright © HandyOrg 2018-2021
- 3.1.0.0
- 3.1.0.0
- 3.1.0.0
- https://github.com/HandyOrg/HandyControl
..\..\Shared\HandyControlDemo_Shared\app.manifest
diff --git a/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj b/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj
index 5d2db9ee..7b163473 100644
--- a/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj
+++ b/src/Net_40/HandyControl_Net_40/HandyControl_Net_40.csproj
@@ -3,18 +3,15 @@
HandyControl
HandyControl
net40
- Contains some commonly used simple WPF controls
+ Contains some simple and commonly used WPF controls
HandyControl
- true
snupkg
0067;0649;1591;0108;1717
- true
..\..\Shared\HandyControl_Shared\key.snk
- Copyright © HandyOrg 2018-2021
- 3.1.0.0
- 3.1.0.0
- 3.1.0.0
- https://github.com/HandyOrg/HandyControl
+ true
+ WPF C# Control
+ Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
+ git
true
diff --git a/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml b/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml
index 659adf27..51e706b8 100644
--- a/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml
+++ b/src/Net_40/HandyControl_Net_40/Themes/Styles/DataGrid.xaml
@@ -46,12 +46,14 @@
-
+
-
-
+
+
+
+
diff --git a/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml b/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
index d89909b1..590a5318 100644
--- a/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
+++ b/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
@@ -1,4 +1,10 @@
-
+
+
@@ -2397,10 +2403,13 @@
+
-
+
+
+
@@ -7362,9 +7371,9 @@
-
+
-
+
@@ -8252,7 +8261,7 @@
-
+
@@ -8281,14 +8290,14 @@
-
+
-
+
@@ -8312,7 +8321,7 @@
-
+
@@ -8320,7 +8329,7 @@
-
+
@@ -8348,7 +8357,7 @@
-
+
@@ -8356,7 +8365,7 @@
-
+
@@ -8379,7 +8388,7 @@
-
+
@@ -9809,7 +9818,7 @@
-
+
@@ -11445,12 +11454,14 @@
-
+
-
-
+
+
+
+
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 e4c5a8ed..6166da8a 100644
--- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
@@ -7,12 +7,6 @@
..\..\Shared\HandyControlDemo_Shared\Resources\Img\icon.ico
0108;MSB3026;MSB3061
NETSDK1138
- true
- Copyright © HandyOrg 2018-2021
- 3.1.0.0
- 3.1.0.0
- 3.1.0.0
- https://github.com/HandyOrg/HandyControl
..\..\Shared\HandyControlDemo_Shared\app.manifest
diff --git a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
index 195f24e6..9926b810 100644
--- a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
@@ -3,19 +3,16 @@
HandyControl
HandyControl
netcoreapp3.0;netcoreapp3.1;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net5.0-windows
- Contains some commonly used simple WPF controls
+ Contains some simple and commonly used WPF controls
HandyControl
- true
snupkg
0067;0649;1591;MSB3061;SYSLIB0003;SYSLIB0004
NETSDK1138
- true
..\..\Shared\HandyControl_Shared\key.snk
- Copyright © HandyOrg 2018-2021
- 3.1.0.0
- 3.1.0.0
- 3.1.0.0
- https://github.com/HandyOrg/HandyControl
+ true
+ WPF C# Control
+ Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
+ git
true
diff --git a/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj b/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
index 92a65e77..c116cdcd 100644
--- a/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
+++ b/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
@@ -6,11 +6,6 @@
netcoreapp3.0;netcoreapp3.1;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net5.0-windows
MSB3026;MSB3061
NETSDK1138
- 3.1.0.0
- Copyright © HandyOrg 2018-2021
- https://github.com/HandyOrg/HandyControl
- 3.1.0.0
- 3.1.0.0
diff --git a/src/Shared/HandyControl_Shared/Controls/Image/GifImage.cs b/src/Shared/HandyControl_Shared/Controls/Image/GifImage.cs
index a965eb7d..dc8b5fae 100644
--- a/src/Shared/HandyControl_Shared/Controls/Image/GifImage.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Image/GifImage.cs
@@ -21,6 +21,8 @@ namespace HandyControl.Controls
{
private static readonly Guid GifGuid = new Guid("{b96b3caa-0728-11d3-9d7b-0000f81ef32e}");
+ private static readonly Guid GifSingleFrameGuid = new Guid("{b96b3cb0-0728-11d3-9d7b-0000f81ef32e}");
+
internal IntPtr NativeImage;
private byte[] _rawData;
@@ -204,8 +206,12 @@ namespace HandyControl.Controls
streamInfo = Application.GetContentStream(uri) ?? Application.GetResourceStream(uri);
}
}
+
if (streamInfo == null)
+ {
throw new FileNotFoundException("Resource not found.", uri.ToString());
+ }
+
CreateSourceFromStream(streamInfo.Stream);
}
catch
@@ -214,20 +220,36 @@ namespace HandyControl.Controls
}
}
+ private void SwitchToCommonImage()
+ {
+ if (Source == null && Uri != null)
+ {
+ SetCurrentValue(SourceProperty, new BitmapImage(Uri));
+ }
+ }
+
[ResourceExposure(ResourceScope.None)]
[ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
internal static void EnsureSave(GifImage image, string filename, Stream dataStream)
{
- if (!image.RawGuid.Equals(GifGuid)) return;
- var animatedGif = false;
+ if (!image.RawGuid.Equals(GifGuid) && !image.RawGuid.Equals(GifSingleFrameGuid))
+ {
+ image.SwitchToCommonImage();
+ return;
+ }
+ var animatedGif = false;
var dimensions = image.FrameDimensionsList;
if (dimensions.Select(guid => new GifFrameDimension(guid)).Contains(GifFrameDimension.Time))
{
animatedGif = image.GetFrameCount(GifFrameDimension.Time) > 1;
}
- if (!animatedGif) return;
+ if (!animatedGif)
+ {
+ image.SwitchToCommonImage();
+ return;
+ }
try
{
diff --git a/src/Shared/HandyControl_Shared/Controls/Input/CheckComboBox/CheckComboBox.cs b/src/Shared/HandyControl_Shared/Controls/Input/CheckComboBox/CheckComboBox.cs
index ed8b4ab8..9b9b0baf 100644
--- a/src/Shared/HandyControl_Shared/Controls/Input/CheckComboBox/CheckComboBox.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Input/CheckComboBox/CheckComboBox.cs
@@ -239,7 +239,6 @@ namespace HandyControl.Controls
}
_panel.Children.Clear();
- var dataContext = DataContext;
foreach (var item in SelectedItems)
{
@@ -251,7 +250,7 @@ namespace HandyControl.Controls
Tag = checkComboBoxItem
};
- if (dataContext != null)
+ if (ItemsSource != null)
{
tag.SetBinding(ContentControl.ContentProperty, new Binding(DisplayMemberPath) { Source = item });
}
diff --git a/src/Shared/HandyControl_Shared/Controls/Loading/LoadingCircle.cs b/src/Shared/HandyControl_Shared/Controls/Loading/LoadingCircle.cs
index e6dacdac..1d644160 100644
--- a/src/Shared/HandyControl_Shared/Controls/Loading/LoadingCircle.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Loading/LoadingCircle.cs
@@ -180,6 +180,10 @@ namespace HandyControl.Controls
}
Storyboard.Begin();
+ if (!IsRunning)
+ {
+ Storyboard.Pause();
+ }
}
private Border CreateBorder(int index, double dotInterval, bool needHidden)
diff --git a/src/Shared/HandyControl_Shared/Controls/Loading/LoadingLine.cs b/src/Shared/HandyControl_Shared/Controls/Loading/LoadingLine.cs
index 49bca631..b8976dca 100644
--- a/src/Shared/HandyControl_Shared/Controls/Loading/LoadingLine.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Loading/LoadingLine.cs
@@ -98,6 +98,10 @@ namespace HandyControl.Controls
}
Storyboard.Begin();
+ if (!IsRunning)
+ {
+ Storyboard.Pause();
+ }
}
private Ellipse CreateEllipse(int index, double dotInterval, double dotDiameter)
diff --git a/src/Shared/HandyControl_Shared/Controls/Other/NotifyIcon.cs b/src/Shared/HandyControl_Shared/Controls/Other/NotifyIcon.cs
index 6f196d76..db976dfd 100644
--- a/src/Shared/HandyControl_Shared/Controls/Other/NotifyIcon.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Other/NotifyIcon.cs
@@ -578,37 +578,34 @@ namespace HandyControl.Controls
private IntPtr Callback(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam)
{
- if (IsLoaded)
+ if (msg == _wmTaskbarCreated)
{
- if (msg == _wmTaskbarCreated)
+ if (_messageWindowHandle == hWnd && Visibility == Visibility.Visible)
{
- if (_messageWindowHandle == hWnd && Visibility == Visibility.Visible)
- {
- UpdateIcon(true);
- }
+ UpdateIcon(true);
}
- else
+ }
+ else
+ {
+ switch (lparam.ToInt64())
{
- switch (lparam.ToInt64())
- {
- case InteropValues.WM_LBUTTONDBLCLK:
- WmMouseDown(MouseButton.Left, 2);
- break;
- case InteropValues.WM_LBUTTONUP:
- WmMouseUp(MouseButton.Left);
- break;
- case InteropValues.WM_RBUTTONUP:
- ShowContextMenu();
- WmMouseUp(MouseButton.Right);
- break;
- case InteropValues.WM_MOUSEMOVE:
- if (!_dispatcherTimerPos.IsEnabled)
- {
- _dispatcherTimerPos.Interval = TimeSpan.FromMilliseconds(200);
- _dispatcherTimerPos.Start();
- }
- break;
- }
+ case InteropValues.WM_LBUTTONDBLCLK:
+ WmMouseDown(MouseButton.Left, 2);
+ break;
+ case InteropValues.WM_LBUTTONUP:
+ WmMouseUp(MouseButton.Left);
+ break;
+ case InteropValues.WM_RBUTTONUP:
+ ShowContextMenu();
+ WmMouseUp(MouseButton.Right);
+ break;
+ case InteropValues.WM_MOUSEMOVE:
+ if (!_dispatcherTimerPos.IsEnabled)
+ {
+ _dispatcherTimerPos.Interval = TimeSpan.FromMilliseconds(200);
+ _dispatcherTimerPos.Start();
+ }
+ break;
}
}
diff --git a/src/Shared/HandyControl_Shared/Controls/Other/Pagination.cs b/src/Shared/HandyControl_Shared/Controls/Other/Pagination.cs
index 6bbc4dbb..5c4c6f8b 100644
--- a/src/Shared/HandyControl_Shared/Controls/Other/Pagination.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Other/Pagination.cs
@@ -243,7 +243,7 @@ namespace HandyControl.Controls
{
if (d is Pagination pagination)
{
- pagination.OnAutoHidingChanged((bool)e.NewValue);
+ pagination.OnAutoHidingChanged((bool) e.NewValue);
}
}
diff --git a/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs b/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs
index 6b84450a..2574b1b5 100644
--- a/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs
@@ -218,7 +218,12 @@ namespace HandyControl.Controls
#region Calc AvailableSize
_childGraph.Reset(false);
- var boundingSize = _childGraph.GetBoundingSize(Width.IsNaN(), Height.IsNaN());
+
+
+ var calcWidth = Width.IsNaN() && HorizontalAlignment != HorizontalAlignment.Stretch;
+ var calcHeight = Height.IsNaN() && VerticalAlignment != VerticalAlignment.Stretch;
+
+ var boundingSize = _childGraph.GetBoundingSize(calcWidth, calcHeight);
_childGraph.Reset();
_childGraph.Measure(boundingSize);
return boundingSize;
diff --git a/src/Shared/HandyControl_Shared/Controls/PropertyGrid/PropertyGrid.cs b/src/Shared/HandyControl_Shared/Controls/PropertyGrid/PropertyGrid.cs
index 8e5c2454..3888b91c 100644
--- a/src/Shared/HandyControl_Shared/Controls/PropertyGrid/PropertyGrid.cs
+++ b/src/Shared/HandyControl_Shared/Controls/PropertyGrid/PropertyGrid.cs
@@ -143,7 +143,7 @@ namespace HandyControl.Controls
_dataView.GroupDescriptions.Clear();
_dataView.SortDescriptions.Clear();
_dataView.SortDescriptions.Add(new SortDescription(PropertyItem.CategoryProperty.Name, ListSortDirection.Ascending));
- _dataView.SortDescriptions.Add(new SortDescription(PropertyItem.PropertyNameProperty.Name, ListSortDirection.Ascending));
+ _dataView.SortDescriptions.Add(new SortDescription(PropertyItem.DisplayNameProperty.Name, ListSortDirection.Ascending));
_dataView.GroupDescriptions.Add(new PropertyGroupDescription(PropertyItem.CategoryProperty.Name));
}
}
diff --git a/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs b/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs
index a296ea52..e57821c2 100644
--- a/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs
+++ b/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs
@@ -99,6 +99,14 @@ namespace HandyControl.Controls
}
_isItemSelected = false;
}
+
+ if (!item.HasItems)
+ {
+ RaiseEvent(new FunctionEventArgs