Merge branch 'HandyOrg:master' into japanese-translation
This commit is contained in:
942 files changed
+62191
-61784
No files matched your search
@@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Create a report to help us improve
|
|
||||||
title: ''
|
|
||||||
labels: ''
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Describe the bug**
|
|
||||||
A clear and concise description of what the bug is.
|
|
||||||
|
|
||||||
**To Reproduce**
|
|
||||||
Steps to reproduce the behavior:
|
|
||||||
1. Go to '...'
|
|
||||||
2. Click on '....'
|
|
||||||
3. Scroll down to '....'
|
|
||||||
4. See error
|
|
||||||
|
|
||||||
**Expected behavior**
|
|
||||||
A clear and concise description of what you expected to happen.
|
|
||||||
|
|
||||||
**Screenshots**
|
|
||||||
If applicable, add screenshots to help explain your problem.
|
|
||||||
|
|
||||||
**Environment (please complete the following information):**
|
|
||||||
- .net: [e.g. 4.6.2]
|
|
||||||
- IDE [e.g. vs2017]
|
|
||||||
- Version [e.g. 1.0.0]
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context about the problem here.
|
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
name: Bug report
|
||||||
|
description: File a bug report
|
||||||
|
title: "Bug title"
|
||||||
|
labels: []
|
||||||
|
body:
|
||||||
|
- type: textarea
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: Describe the bug
|
||||||
|
description: Please enter a short, clear description of the bug.
|
||||||
|
- type: textarea
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce the bug
|
||||||
|
description: Please provide any required setup and steps to reproduce the behavior.
|
||||||
|
placeholder: |
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Expected behavior
|
||||||
|
description: Please provide a description of what you expected to happen
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Screenshots
|
||||||
|
description: If applicable, add screenshots here to help explain your problem
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: NuGet package version
|
||||||
|
options:
|
||||||
|
- "HandyControl 3.4.0"
|
||||||
|
- "HandyControl 3.3.0"
|
||||||
|
- "HandyControl 3.2.0"
|
||||||
|
- "HandyControl 3.1.0"
|
||||||
|
- "HandyControl 3.0.0"
|
||||||
|
- "HandyControls (Custom version) 3.4.0"
|
||||||
|
- "HandyControls (Custom version) 3.3.11"
|
||||||
|
- "HandyControls (Custom version) 3.3.10"
|
||||||
|
- "HandyControls (Custom version) 3.3.9"
|
||||||
|
- "HandyControls (Custom version) 3.3.8.1"
|
||||||
|
- "HandyControls (Custom version) 3.3.8"
|
||||||
|
- "HandyControls (Custom version) 3.3.7"
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: IDE
|
||||||
|
description: Which Visual Studio versions did you see the issue on?
|
||||||
|
multiple: true
|
||||||
|
options:
|
||||||
|
- "Visual Studio 2022-preview"
|
||||||
|
- "Visual Studio 2022"
|
||||||
|
- "Visual Studio 2019"
|
||||||
|
- "Visual Studio 2017"
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Framework type
|
||||||
|
description: please specify for which framework type you have encountered the issue.
|
||||||
|
multiple: true
|
||||||
|
options:
|
||||||
|
- ".Net 6.0"
|
||||||
|
- ".Net 5.0"
|
||||||
|
- ".Net Core 3.1"
|
||||||
|
- ".Net Core 3.0"
|
||||||
|
- ".Net Framework 4.8"
|
||||||
|
- ".Net Framework 4.7.2"
|
||||||
|
- ".Net Framework 4.7.1"
|
||||||
|
- ".Net Framework 4.7.0"
|
||||||
|
- ".Net Framework 4.6.2"
|
||||||
|
- ".Net Framework 4.6.1"
|
||||||
|
- ".Net Framework 4.6.0"
|
||||||
|
- ".Net Framework 4.5.2"
|
||||||
|
- ".Net Framework 4.5.1"
|
||||||
|
- ".Net Framework 4.5.0"
|
||||||
|
- ".Net Framework 4.0.0"
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Windows version
|
||||||
|
description: Which Windows versions did you see the issue on?
|
||||||
|
multiple: true
|
||||||
|
options:
|
||||||
|
- "Insider Build (xxxxx)"
|
||||||
|
- "Windows 11 (22000)"
|
||||||
|
- "May 2021 Update (19043)"
|
||||||
|
- "October 2020 Update (19042)"
|
||||||
|
- "May 2020 Update (19041)"
|
||||||
|
- "November 2019 Update (18363)"
|
||||||
|
- "May 2019 Update (18362)"
|
||||||
|
- "October 2018 Update (17763)"
|
||||||
|
- "April 2018 Update (17134)"
|
||||||
|
- "Fall Creators Update (16299)"
|
||||||
|
- "Creators Update (15063)"
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Additional context
|
||||||
|
description: Enter any other applicable info here
|
||||||
+1
-1
@@ -143,7 +143,7 @@ HandyControl 项目已加入 [dotNET China](https://gitee.com/dotnetchina) 组
|
|||||||
|
|
||||||
<a href="https://getquicker.net" target="_blank"><img width="70px" alt="quicker" src="https://files.getquicker.net/_sitefiles/quicker_round_128.png"></a>
|
<a href="https://getquicker.net" target="_blank"><img width="70px" alt="quicker" src="https://files.getquicker.net/_sitefiles/quicker_round_128.png"></a>
|
||||||
<a href="https://www.phpenv.cn" target="_blank"><img width="70px" alt="phpenv" src="https://www.phpenv.cn/usr/themes/phpenv/img/logo.png"></a>
|
<a href="https://www.phpenv.cn" target="_blank"><img width="70px" alt="phpenv" src="https://www.phpenv.cn/usr/themes/phpenv/img/logo.png"></a>
|
||||||
<a href="https://atmb.top" target="_blank"><img width="70px" alt="AutumnBox" src="https://atmb.top/images/icon.png"></a>
|
<a href="https://github.com/zsh2401/AutumnBox" target="_blank"><img width="70px" alt="AutumnBox" src="https://raw.githubusercontent.com/zsh2401/AutumnBox/master/src/AutumnBox.GUI/Resources/Icons/icon.ico"></a>
|
||||||
|
|
||||||
如果你的项目没有被列出,请告知我们! 😀
|
如果你的项目没有被列出,请告知我们! 😀
|
||||||
|
|
||||||
|
|||||||
@@ -137,7 +137,7 @@
|
|||||||
|
|
||||||
<a href="https://getquicker.net" target="_blank"><img width="70px" alt="quicker" src="https://i0.hdslb.com/bfs/face/3765a3d0ce5da37e1aaa830d2eec6d3e0806a2d8.jpg@96w_96h_1c.webp"></a>
|
<a href="https://getquicker.net" target="_blank"><img width="70px" alt="quicker" src="https://i0.hdslb.com/bfs/face/3765a3d0ce5da37e1aaa830d2eec6d3e0806a2d8.jpg@96w_96h_1c.webp"></a>
|
||||||
<a href="https://www.phpenv.cn" target="_blank"><img width="70px" alt="phpenv" src="https://www.phpenv.cn/usr/themes/phpenv/img/logo.png"></a>
|
<a href="https://www.phpenv.cn" target="_blank"><img width="70px" alt="phpenv" src="https://www.phpenv.cn/usr/themes/phpenv/img/logo.png"></a>
|
||||||
<a href="https://atmb.top" target="_blank"><img width="70px" alt="AutumnBox" src="https://atmb.top/images/icon.png"></a>
|
<a href="https://github.com/zsh2401/AutumnBox" target="_blank"><img width="70px" alt="AutumnBox" src="https://raw.githubusercontent.com/zsh2401/AutumnBox/master/src/AutumnBox.GUI/Resources/Icons/icon.ico"></a>
|
||||||
|
|
||||||
if your project is not listed here, let us know! 😀
|
if your project is not listed here, let us know! 😀
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
|
||||||
|
<metadata>
|
||||||
|
<id>HandyControl.Lang.es</id>
|
||||||
|
<version>3.3.0</version>
|
||||||
|
<title>HandyOrg</title>
|
||||||
|
<authors>HandyOrg</authors>
|
||||||
|
<owners>HandyOrg</owners>
|
||||||
|
<requireLicenseAcceptance>true</requireLicenseAcceptance>
|
||||||
|
<license type="file">LICENSE</license>
|
||||||
|
<icon>icon.png</icon>
|
||||||
|
<projectUrl>https://github.com/HandyOrg/HandyControl</projectUrl>
|
||||||
|
<description>Contains some simple and commonly used WPF controls</description>
|
||||||
|
<releaseNotes>Changes are detailed at https://github.com/HandyOrg/HandyControl/releases</releaseNotes>
|
||||||
|
<copyright>Copyright © HandyOrg 2018-2021</copyright>
|
||||||
|
<tags>WPF C# Control</tags>
|
||||||
|
<repository type="git" url="https://github.com/HandyOrg/HandyControl" commit="083639031635a4b9618842b2be589324d8676055" />
|
||||||
|
<dependencies>
|
||||||
|
<group targetFramework=".NETFramework4.0" />
|
||||||
|
<group targetFramework=".NETFramework4.5" />
|
||||||
|
<group targetFramework=".NETFramework4.5.1" />
|
||||||
|
<group targetFramework=".NETFramework4.5.2" />
|
||||||
|
<group targetFramework=".NETFramework4.6" />
|
||||||
|
<group targetFramework=".NETFramework4.6.1" />
|
||||||
|
<group targetFramework=".NETFramework4.6.2" />
|
||||||
|
<group targetFramework=".NETFramework4.7" />
|
||||||
|
<group targetFramework=".NETFramework4.7.1" />
|
||||||
|
<group targetFramework=".NETFramework4.7.2" />
|
||||||
|
<group targetFramework=".NETFramework4.8" />
|
||||||
|
<group targetFramework=".NETCoreApp3.0" />
|
||||||
|
<group targetFramework=".NETCoreApp3.1" />
|
||||||
|
<group targetFramework="net5.0" />
|
||||||
|
<group targetFramework="net6.0" />
|
||||||
|
</dependencies>
|
||||||
|
</metadata>
|
||||||
|
<files>
|
||||||
|
<file src="lib\net40\es\HandyControl.resources.dll" target="lib\net40\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net45\es\HandyControl.resources.dll" target="lib\net45\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net451\es\HandyControl.resources.dll" target="lib\net451\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net452\es\HandyControl.resources.dll" target="lib\net452\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net46\es\HandyControl.resources.dll" target="lib\net46\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net461\es\HandyControl.resources.dll" target="lib\net461\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net462\es\HandyControl.resources.dll" target="lib\net462\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net47\es\HandyControl.resources.dll" target="lib\net47\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net471\es\HandyControl.resources.dll" target="lib\net471\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net472\es\HandyControl.resources.dll" target="lib\net472\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net48\es\HandyControl.resources.dll" target="lib\net48\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net5.0\es\HandyControl.resources.dll" target="lib\net5.0\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\net6.0\es\HandyControl.resources.dll" target="lib\net6.0\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\netcoreapp3.0\es\HandyControl.resources.dll" target="lib\netcoreapp3.0\es\HandyControl.resources.dll" />
|
||||||
|
<file src="lib\netcoreapp3.1\es\HandyControl.resources.dll" target="lib\netcoreapp3.1\es\HandyControl.resources.dll" />
|
||||||
|
<file src="icon.png" target="icon.png" />
|
||||||
|
<file src="LICENSE" target="LICENSE" />
|
||||||
|
</files>
|
||||||
|
</package>
|
||||||
+20
-2
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio Version 16
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 16.0.28729.10
|
VisualStudioVersion = 17.1.32228.430
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControl_Net_GE45", "Net_GE45\HandyControl_Net_GE45\HandyControl_Net_GE45.csproj", "{DC966E3D-BCFF-4652-98CF-070E5494749A}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControl_Net_GE45", "Net_GE45\HandyControl_Net_GE45\HandyControl_Net_GE45.csproj", "{DC966E3D-BCFF-4652-98CF-070E5494749A}"
|
||||||
EndProject
|
EndProject
|
||||||
@@ -30,16 +30,31 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
|||||||
Directory.Build.Props = Directory.Build.Props
|
Directory.Build.Props = Directory.Build.Props
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Microsoft.Expression.Drawing", "Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.shproj", "{E5DC7C25-6293-4660-B5FB-186496386B90}"
|
||||||
|
EndProject
|
||||||
|
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "System.Windows.Interactivity", "Shared\System.Windows.Interactivity\System.Windows.Interactivity.shproj", "{6F0C9CFF-2269-46A7-9664-478354C582A4}"
|
||||||
|
EndProject
|
||||||
|
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Microsoft.Expression.Interactions", "Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.shproj", "{3531857C-28FC-4E0F-82D9-BFBB70740E04}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||||
Shared\HandyControl_Shared\HandyControl_Shared.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
|
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\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\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\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\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*{c4694269-c9b8-45d5-87f8-d0088c532510}*SharedItemsImports = 13
|
||||||
Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.projitems*{d8ae88f8-c36b-4d10-a7f9-22ffcfba5231}*SharedItemsImports = 5
|
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\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
|
EndGlobalSection
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -93,6 +108,9 @@ Global
|
|||||||
{D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231} = {35E3F9C0-8924-4536-BE09-F3761FDBF066}
|
{D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231} = {35E3F9C0-8924-4536-BE09-F3761FDBF066}
|
||||||
{D8A4748C-0500-4F63-BC47-3506658C68F7} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897}
|
{D8A4748C-0500-4F63-BC47-3506658C68F7} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897}
|
||||||
{BBE51380-8B21-49FF-9CFC-B29447A40999} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897}
|
{BBE51380-8B21-49FF-9CFC-B29447A40999} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897}
|
||||||
|
{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}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {D4636382-1A18-4079-A3E7-054DD970F179}
|
SolutionGuid = {D4636382-1A18-4079-A3E7-054DD970F179}
|
||||||
|
|||||||
@@ -83,6 +83,9 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="..\..\Shared\HandyControl_Shared\HandyControl_Shared.projitems" Label="Shared" />
|
<Import Project="..\..\Shared\HandyControl_Shared\HandyControl_Shared.projitems" Label="Shared" />
|
||||||
<Import Project="..\..\Shared\Microsoft.Windows.Shell\Microsoft.Windows.Shell.projitems" Label="Shared" />
|
<Import Project="..\..\Shared\Microsoft.Windows.Shell\Microsoft.Windows.Shell.projitems" Label="Shared" />
|
||||||
|
<Import Project="..\..\Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.projitems" Label="Shared" />
|
||||||
|
<Import Project="..\..\Shared\System.Windows.Interactivity\System.Windows.Interactivity.projitems" Label="Shared" />
|
||||||
|
<Import Project="..\..\Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.projitems" Label="Shared" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Resource Include="..\..\Shared\HandyControl_Shared\Resources\dropper.cur">
|
<Resource Include="..\..\Shared\HandyControl_Shared\Resources\dropper.cur">
|
||||||
<Link>Resources\dropper.cur</Link>
|
<Link>Resources\dropper.cur</Link>
|
||||||
|
|||||||
@@ -99,10 +99,10 @@
|
|||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<Setter.Value>
|
<Setter.Value>
|
||||||
<ControlTemplate TargetType="TreeView">
|
<ControlTemplate TargetType="TreeView">
|
||||||
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="true">
|
<Border x:Name="Bd" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="true">
|
||||||
<hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
|
<hc:ToggleBlock IsChecked="{Binding HasItems,RelativeSource={RelativeSource TemplatedParent},Mode=OneWay}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
|
||||||
<hc:ToggleBlock.CheckedContent>
|
<hc:ToggleBlock.CheckedContent>
|
||||||
<hc:ScrollViewer x:Name="_tv_scrollviewer_" IsInertiaEnabled="{Binding Path=(hc:ScrollViewer.IsInertiaEnabled),RelativeSource={RelativeSource TemplatedParent}}" Template="{StaticResource ScrollViewerBaseControlTemplate}" Background="{TemplateBinding Background}" CanContentScroll="false" Focusable="false" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}">
|
<hc:ScrollViewer IsInertiaEnabled="{Binding Path=(hc:ScrollViewer.IsInertiaEnabled),RelativeSource={RelativeSource TemplatedParent}}" CanContentScroll="false" Focusable="false" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}">
|
||||||
<ItemsPresenter/>
|
<ItemsPresenter/>
|
||||||
</hc:ScrollViewer>
|
</hc:ScrollViewer>
|
||||||
</hc:ToggleBlock.CheckedContent>
|
</hc:ToggleBlock.CheckedContent>
|
||||||
|
|||||||
File diff suppressed because it is too large.
Load diff
@@ -83,6 +83,9 @@
|
|||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="..\..\Shared\HandyControl_Shared\HandyControl_Shared.projitems" Label="Shared" />
|
<Import Project="..\..\Shared\HandyControl_Shared\HandyControl_Shared.projitems" Label="Shared" />
|
||||||
|
<Import Project="..\..\Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.projitems" Label="Shared" />
|
||||||
|
<Import Project="..\..\Shared\System.Windows.Interactivity\System.Windows.Interactivity.projitems" Label="Shared" />
|
||||||
|
<Import Project="..\..\Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.projitems" Label="Shared" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Resource Include="..\..\Shared\HandyControl_Shared\Resources\dropper.cur">
|
<Resource Include="..\..\Shared\HandyControl_Shared\Resources\dropper.cur">
|
||||||
<Link>Resources\dropper.cur</Link>
|
<Link>Resources\dropper.cur</Link>
|
||||||
|
|||||||
@@ -854,8 +854,8 @@
|
|||||||
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Basic\InteractiveDialogViewModel.cs">
|
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Basic\InteractiveDialogViewModel.cs">
|
||||||
<Link>ViewModel\InteractiveDialogViewModel.cs</Link>
|
<Link>ViewModel\InteractiveDialogViewModel.cs</Link>
|
||||||
</Resource>
|
</Resource>
|
||||||
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Common\ComboBoxDemoViewModel.cs">
|
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Common\InputElementDemoViewModel.cs">
|
||||||
<Link>ViewModel\ComboBoxDemoViewModel.cs</Link>
|
<Link>ViewModel\InputElementDemoViewModel.cs</Link>
|
||||||
</Resource>
|
</Resource>
|
||||||
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Controls\AutoCompleteTextBoxDemoViewModel.cs">
|
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Controls\AutoCompleteTextBoxDemoViewModel.cs">
|
||||||
<Link>ViewModel\AutoCompleteTextBoxDemoViewModel.cs</Link>
|
<Link>ViewModel\AutoCompleteTextBoxDemoViewModel.cs</Link>
|
||||||
@@ -887,9 +887,6 @@
|
|||||||
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Controls\PaginationDemoViewModel.cs">
|
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Controls\PaginationDemoViewModel.cs">
|
||||||
<Link>ViewModel\PaginationDemoViewModel.cs</Link>
|
<Link>ViewModel\PaginationDemoViewModel.cs</Link>
|
||||||
</Resource>
|
</Resource>
|
||||||
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Controls\SearchBarDemoViewModel.cs">
|
|
||||||
<Link>ViewModel\SearchBarDemoViewModel.cs</Link>
|
|
||||||
</Resource>
|
|
||||||
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Controls\SideMenuDemoViewModel.cs">
|
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Controls\SideMenuDemoViewModel.cs">
|
||||||
<Link>ViewModel\SideMenuDemoViewModel.cs</Link>
|
<Link>ViewModel\SideMenuDemoViewModel.cs</Link>
|
||||||
</Resource>
|
</Resource>
|
||||||
|
|||||||
@@ -15,124 +15,123 @@ using HandyControlDemo.Data;
|
|||||||
using HandyControlDemo.Properties.Langs;
|
using HandyControlDemo.Properties.Langs;
|
||||||
using HandyControlDemo.Tools;
|
using HandyControlDemo.Tools;
|
||||||
|
|
||||||
namespace HandyControlDemo
|
namespace HandyControlDemo;
|
||||||
|
|
||||||
|
public partial class App
|
||||||
{
|
{
|
||||||
public partial class App
|
|
||||||
{
|
|
||||||
#pragma warning disable IDE0052
|
#pragma warning disable IDE0052
|
||||||
[SuppressMessage("ReSharper", "NotAccessedField.Local")]
|
[SuppressMessage("ReSharper", "NotAccessedField.Local")]
|
||||||
private static Mutex AppMutex;
|
private static Mutex AppMutex;
|
||||||
#pragma warning restore IDE0052
|
#pragma warning restore IDE0052
|
||||||
|
|
||||||
public App()
|
public App()
|
||||||
{
|
{
|
||||||
#if !NET40
|
#if !NET40
|
||||||
var cachePath = $"{AppDomain.CurrentDomain.BaseDirectory}Cache";
|
var cachePath = $"{AppDomain.CurrentDomain.BaseDirectory}Cache";
|
||||||
if (!Directory.Exists(cachePath))
|
if (!Directory.Exists(cachePath))
|
||||||
{
|
|
||||||
Directory.CreateDirectory(cachePath);
|
|
||||||
}
|
|
||||||
ProfileOptimization.SetProfileRoot(cachePath);
|
|
||||||
ProfileOptimization.StartProfile("Profile");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnStartup(StartupEventArgs e)
|
|
||||||
{
|
{
|
||||||
AppMutex = new Mutex(true, "HandyControlDemo", out var createdNew);
|
Directory.CreateDirectory(cachePath);
|
||||||
|
}
|
||||||
|
ProfileOptimization.SetProfileRoot(cachePath);
|
||||||
|
ProfileOptimization.StartProfile("Profile");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
if (!createdNew)
|
protected override void OnStartup(StartupEventArgs e)
|
||||||
|
{
|
||||||
|
AppMutex = new Mutex(true, "HandyControlDemo", out var createdNew);
|
||||||
|
|
||||||
|
if (!createdNew)
|
||||||
|
{
|
||||||
|
var current = Process.GetCurrentProcess();
|
||||||
|
|
||||||
|
foreach (var process in Process.GetProcessesByName(current.ProcessName))
|
||||||
{
|
{
|
||||||
var current = Process.GetCurrentProcess();
|
if (process.Id != current.Id)
|
||||||
|
|
||||||
foreach (var process in Process.GetProcessesByName(current.ProcessName))
|
|
||||||
{
|
{
|
||||||
if (process.Id != current.Id)
|
Win32Helper.SetForegroundWindow(process.MainWindowHandle);
|
||||||
{
|
break;
|
||||||
Win32Helper.SetForegroundWindow(process.MainWindowHandle);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Shutdown();
|
|
||||||
}
|
}
|
||||||
else
|
Shutdown();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var splashScreen = new SplashScreen("Resources/Img/Cover.png");
|
||||||
|
splashScreen.Show(true);
|
||||||
|
|
||||||
|
base.OnStartup(e);
|
||||||
|
|
||||||
|
UpdateRegistry();
|
||||||
|
|
||||||
|
ShutdownMode = ShutdownMode.OnMainWindowClose;
|
||||||
|
GlobalData.Init();
|
||||||
|
ConfigHelper.Instance.SetLang(GlobalData.Config.Lang);
|
||||||
|
LangProvider.Culture = new CultureInfo(GlobalData.Config.Lang);
|
||||||
|
|
||||||
|
if (GlobalData.Config.Skin != SkinType.Default)
|
||||||
{
|
{
|
||||||
var splashScreen = new SplashScreen("Resources/Img/Cover.png");
|
UpdateSkin(GlobalData.Config.Skin);
|
||||||
splashScreen.Show(true);
|
}
|
||||||
|
|
||||||
base.OnStartup(e);
|
ConfigHelper.Instance.SetWindowDefaultStyle();
|
||||||
|
ConfigHelper.Instance.SetNavigationWindowDefaultStyle();
|
||||||
UpdateRegistry();
|
|
||||||
|
|
||||||
ShutdownMode = ShutdownMode.OnMainWindowClose;
|
|
||||||
GlobalData.Init();
|
|
||||||
ConfigHelper.Instance.SetLang(GlobalData.Config.Lang);
|
|
||||||
LangProvider.Culture = new CultureInfo(GlobalData.Config.Lang);
|
|
||||||
|
|
||||||
if (GlobalData.Config.Skin != SkinType.Default)
|
|
||||||
{
|
|
||||||
UpdateSkin(GlobalData.Config.Skin);
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigHelper.Instance.SetWindowDefaultStyle();
|
|
||||||
ConfigHelper.Instance.SetNavigationWindowDefaultStyle();
|
|
||||||
|
|
||||||
#if NET40
|
#if NET40
|
||||||
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
|
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
|
||||||
#else
|
#else
|
||||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnExit(ExitEventArgs e)
|
protected override void OnExit(ExitEventArgs e)
|
||||||
|
{
|
||||||
|
base.OnExit(e);
|
||||||
|
GlobalData.Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void UpdateSkin(SkinType skin)
|
||||||
|
{
|
||||||
|
var skins0 = Resources.MergedDictionaries[0];
|
||||||
|
skins0.MergedDictionaries.Clear();
|
||||||
|
skins0.MergedDictionaries.Add(ResourceHelper.GetSkin(skin));
|
||||||
|
skins0.MergedDictionaries.Add(ResourceHelper.GetSkin(typeof(App).Assembly, "Resources/Themes", skin));
|
||||||
|
|
||||||
|
var skins1 = Resources.MergedDictionaries[1];
|
||||||
|
skins1.MergedDictionaries.Clear();
|
||||||
|
skins1.MergedDictionaries.Add(new ResourceDictionary
|
||||||
{
|
{
|
||||||
base.OnExit(e);
|
Source = new Uri("pack://application:,,,/HandyControl;component/Themes/Theme.xaml")
|
||||||
GlobalData.Save();
|
});
|
||||||
}
|
skins1.MergedDictionaries.Add(new ResourceDictionary
|
||||||
|
|
||||||
internal void UpdateSkin(SkinType skin)
|
|
||||||
{
|
{
|
||||||
var skins0 = Resources.MergedDictionaries[0];
|
Source = new Uri("pack://application:,,,/HandyControlDemo;component/Resources/Themes/Theme.xaml")
|
||||||
skins0.MergedDictionaries.Clear();
|
});
|
||||||
skins0.MergedDictionaries.Add(ResourceHelper.GetSkin(skin));
|
|
||||||
skins0.MergedDictionaries.Add(ResourceHelper.GetSkin(typeof(App).Assembly, "Resources/Themes", skin));
|
|
||||||
|
|
||||||
var skins1 = Resources.MergedDictionaries[1];
|
Current.MainWindow?.OnApplyTemplate();
|
||||||
skins1.MergedDictionaries.Clear();
|
}
|
||||||
skins1.MergedDictionaries.Add(new ResourceDictionary
|
|
||||||
{
|
|
||||||
Source = new Uri("pack://application:,,,/HandyControl;component/Themes/Theme.xaml")
|
|
||||||
});
|
|
||||||
skins1.MergedDictionaries.Add(new ResourceDictionary
|
|
||||||
{
|
|
||||||
Source = new Uri("pack://application:,,,/HandyControlDemo;component/Resources/Themes/Theme.xaml")
|
|
||||||
});
|
|
||||||
|
|
||||||
Current.MainWindow?.OnApplyTemplate();
|
private void UpdateRegistry()
|
||||||
}
|
{
|
||||||
|
var processModule = Process.GetCurrentProcess().MainModule;
|
||||||
private void UpdateRegistry()
|
if (processModule != null)
|
||||||
{
|
{
|
||||||
var processModule = Process.GetCurrentProcess().MainModule;
|
var registryFilePath = $"{Path.GetDirectoryName(processModule.FileName)}\\Registry.reg";
|
||||||
if (processModule != null)
|
if (!File.Exists(registryFilePath))
|
||||||
{
|
{
|
||||||
var registryFilePath = $"{Path.GetDirectoryName(processModule.FileName)}\\Registry.reg";
|
var streamResourceInfo = GetResourceStream(new Uri("pack://application:,,,/Resources/Registry.txt"));
|
||||||
if (!File.Exists(registryFilePath))
|
if (streamResourceInfo != null)
|
||||||
{
|
{
|
||||||
var streamResourceInfo = GetResourceStream(new Uri("pack://application:,,,/Resources/Registry.txt"));
|
using var reader = new StreamReader(streamResourceInfo.Stream);
|
||||||
if (streamResourceInfo != null)
|
var registryStr = reader.ReadToEnd();
|
||||||
|
var newRegistryStr = registryStr.Replace("#", processModule.FileName.Replace("\\", "\\\\"));
|
||||||
|
File.WriteAllText(registryFilePath, newRegistryStr);
|
||||||
|
Process.Start(new ProcessStartInfo("cmd", $"/c {registryFilePath}")
|
||||||
{
|
{
|
||||||
using var reader = new StreamReader(streamResourceInfo.Stream);
|
UseShellExecute = false,
|
||||||
var registryStr = reader.ReadToEnd();
|
CreateNoWindow = true
|
||||||
var newRegistryStr = registryStr.Replace("#", processModule.FileName.Replace("\\", "\\\\"));
|
});
|
||||||
File.WriteAllText(registryFilePath, newRegistryStr);
|
|
||||||
Process.Start(new ProcessStartInfo("cmd", $"/c {registryFilePath}")
|
|
||||||
{
|
|
||||||
UseShellExecute = false,
|
|
||||||
CreateNoWindow = true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
using System;
|
using System;
|
||||||
using HandyControl.Data;
|
using HandyControl.Data;
|
||||||
|
|
||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
internal class AppConfig
|
||||||
{
|
{
|
||||||
internal class AppConfig
|
public static readonly string SavePath = $"{AppDomain.CurrentDomain.BaseDirectory}AppConfig.json";
|
||||||
{
|
|
||||||
public static readonly string SavePath = $"{AppDomain.CurrentDomain.BaseDirectory}AppConfig.json";
|
|
||||||
|
|
||||||
public string Lang { get; set; } = "zh-cn";
|
public string Lang { get; set; } = "zh-cn";
|
||||||
|
|
||||||
public SkinType Skin { get; set; }
|
public SkinType Skin { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,12 @@
|
|||||||
|
|
||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
public enum DemoType
|
||||||
{
|
{
|
||||||
public enum DemoType
|
Type1 = 1,
|
||||||
{
|
Type2,
|
||||||
Type1 = 1,
|
Type3,
|
||||||
Type2,
|
Type4,
|
||||||
Type3,
|
Type5,
|
||||||
Type4,
|
Type6
|
||||||
Type5,
|
|
||||||
Type6
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,38 +1,37 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
internal class GlobalData
|
||||||
{
|
{
|
||||||
internal class GlobalData
|
public static void Init()
|
||||||
{
|
{
|
||||||
public static void Init()
|
if (File.Exists(AppConfig.SavePath))
|
||||||
{
|
{
|
||||||
if (File.Exists(AppConfig.SavePath))
|
try
|
||||||
{
|
{
|
||||||
try
|
var json = File.ReadAllText(AppConfig.SavePath);
|
||||||
{
|
Config = (string.IsNullOrEmpty(json) ? new AppConfig() : JsonConvert.DeserializeObject<AppConfig>(json)) ?? new AppConfig();
|
||||||
var json = File.ReadAllText(AppConfig.SavePath);
|
|
||||||
Config = (string.IsNullOrEmpty(json) ? new AppConfig() : JsonConvert.DeserializeObject<AppConfig>(json)) ?? new AppConfig();
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
Config = new AppConfig();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
catch
|
||||||
{
|
{
|
||||||
Config = new AppConfig();
|
Config = new AppConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
public static void Save()
|
|
||||||
{
|
{
|
||||||
var json = JsonConvert.SerializeObject(Config);
|
Config = new AppConfig();
|
||||||
File.WriteAllText(AppConfig.SavePath, json);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AppConfig Config { get; set; }
|
|
||||||
|
|
||||||
public static bool NotifyIconIsShow { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Save()
|
||||||
|
{
|
||||||
|
var json = JsonConvert.SerializeObject(Config);
|
||||||
|
File.WriteAllText(AppConfig.SavePath, json);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AppConfig Config { get; set; }
|
||||||
|
|
||||||
|
public static bool NotifyIconIsShow { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,58 +1,57 @@
|
|||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
public class MessageToken
|
||||||
{
|
{
|
||||||
public class MessageToken
|
public static readonly string LoadShowContent = nameof(LoadShowContent);
|
||||||
{
|
|
||||||
public static readonly string LoadShowContent = nameof(LoadShowContent);
|
|
||||||
|
|
||||||
public static readonly string FullSwitch = nameof(FullSwitch);
|
public static readonly string FullSwitch = nameof(FullSwitch);
|
||||||
|
|
||||||
public static readonly string ContributorsView = nameof(ContributorsView);
|
public static readonly string ContributorsView = nameof(ContributorsView);
|
||||||
|
|
||||||
public static readonly string ClearLeftSelected = nameof(ClearLeftSelected);
|
public static readonly string ClearLeftSelected = nameof(ClearLeftSelected);
|
||||||
|
|
||||||
public static readonly string SendChatMessage = nameof(SendChatMessage);
|
public static readonly string SendChatMessage = nameof(SendChatMessage);
|
||||||
|
|
||||||
public static readonly string GrowlDemoPanel = nameof(GrowlDemoPanel);
|
public static readonly string GrowlDemoPanel = nameof(GrowlDemoPanel);
|
||||||
|
|
||||||
public static readonly string DialogDemoWindow = nameof(DialogDemoWindow);
|
public static readonly string DialogDemoWindow = nameof(DialogDemoWindow);
|
||||||
|
|
||||||
public static readonly string MainWindow = nameof(MainWindow);
|
public static readonly string MainWindow = nameof(MainWindow);
|
||||||
|
|
||||||
public static readonly string PracticalDemo = nameof(PracticalDemo);
|
public static readonly string PracticalDemo = nameof(PracticalDemo);
|
||||||
|
|
||||||
public static readonly string ProjectsView = nameof(ProjectsView);
|
public static readonly string ProjectsView = nameof(ProjectsView);
|
||||||
|
|
||||||
public static readonly string BlogsView = nameof(BlogsView);
|
public static readonly string BlogsView = nameof(BlogsView);
|
||||||
|
|
||||||
public static readonly string WebsitesView = nameof(WebsitesView);
|
public static readonly string WebsitesView = nameof(WebsitesView);
|
||||||
|
|
||||||
public static readonly string NotifyIconDemo = nameof(NotifyIconDemo);
|
public static readonly string NotifyIconDemo = nameof(NotifyIconDemo);
|
||||||
|
|
||||||
public static readonly string NotifyIconContextDemo = nameof(NotifyIconContextDemo);
|
public static readonly string NotifyIconContextDemo = nameof(NotifyIconContextDemo);
|
||||||
|
|
||||||
public static readonly string CommonWindow = nameof(CommonWindow);
|
public static readonly string CommonWindow = nameof(CommonWindow);
|
||||||
|
|
||||||
public static readonly string BlurWindow = nameof(BlurWindow);
|
public static readonly string BlurWindow = nameof(BlurWindow);
|
||||||
|
|
||||||
public static readonly string CustomNonClientAreaWindow = nameof(CustomNonClientAreaWindow);
|
public static readonly string CustomNonClientAreaWindow = nameof(CustomNonClientAreaWindow);
|
||||||
|
|
||||||
public static readonly string NoNonClientAreaDragableWindow = nameof(NoNonClientAreaDragableWindow);
|
public static readonly string NoNonClientAreaDragableWindow = nameof(NoNonClientAreaDragableWindow);
|
||||||
|
|
||||||
public static readonly string QQGroupView = nameof(QQGroupView);
|
public static readonly string QQGroupView = nameof(QQGroupView);
|
||||||
|
|
||||||
public static readonly string GlowWindow = nameof(GlowWindow);
|
public static readonly string GlowWindow = nameof(GlowWindow);
|
||||||
|
|
||||||
public static readonly string NativeCommonWindow = nameof(NativeCommonWindow);
|
public static readonly string NativeCommonWindow = nameof(NativeCommonWindow);
|
||||||
|
|
||||||
public static readonly string NavigationWindow = nameof(NavigationWindow);
|
public static readonly string NavigationWindow = nameof(NavigationWindow);
|
||||||
|
|
||||||
public static readonly string TouchDragMoveWindow = nameof(TouchDragMoveWindow);
|
public static readonly string TouchDragMoveWindow = nameof(TouchDragMoveWindow);
|
||||||
|
|
||||||
public static readonly string DialogContainer = nameof(DialogContainer);
|
public static readonly string DialogContainer = nameof(DialogContainer);
|
||||||
|
|
||||||
public static readonly string LangUpdated = nameof(LangUpdated);
|
public static readonly string LangUpdated = nameof(LangUpdated);
|
||||||
|
|
||||||
public static readonly string SkinUpdated = nameof(SkinUpdated);
|
public static readonly string SkinUpdated = nameof(SkinUpdated);
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
|
|
||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
public class AvatarModel
|
||||||
{
|
{
|
||||||
public class AvatarModel
|
public string DisplayName { get; set; }
|
||||||
{
|
|
||||||
public string DisplayName { get; set; }
|
|
||||||
|
|
||||||
public string Link { get; set; }
|
public string Link { get; set; }
|
||||||
|
|
||||||
public string AvatarUri { get; set; }
|
public string AvatarUri { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
public class CardModel
|
||||||
{
|
{
|
||||||
public class CardModel
|
public string Header { get; set; }
|
||||||
{
|
|
||||||
public string Header { get; set; }
|
|
||||||
|
|
||||||
public string Content { get; set; }
|
public string Content { get; set; }
|
||||||
|
|
||||||
public string Footer { get; set; }
|
public string Footer { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,17 +1,16 @@
|
|||||||
using HandyControl.Data;
|
using HandyControl.Data;
|
||||||
|
|
||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
public struct ChatInfoModel
|
||||||
{
|
{
|
||||||
public struct ChatInfoModel
|
public object Message { get; set; }
|
||||||
{
|
|
||||||
public object Message { get; set; }
|
|
||||||
|
|
||||||
public string SenderId { get; set; }
|
public string SenderId { get; set; }
|
||||||
|
|
||||||
public ChatRoleType Role { get; set; }
|
public ChatRoleType Role { get; set; }
|
||||||
|
|
||||||
public ChatMessageType Type { get; set; }
|
public ChatMessageType Type { get; set; }
|
||||||
|
|
||||||
public object Enclosure { get; set; }
|
public object Enclosure { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
{
|
|
||||||
public class CoverViewDemoModel
|
|
||||||
{
|
|
||||||
public string ImgPath { get; set; }
|
|
||||||
|
|
||||||
public string BackgroundToken { get; set; }
|
public class CoverViewDemoModel
|
||||||
}
|
{
|
||||||
|
public string ImgPath { get; set; }
|
||||||
|
|
||||||
|
public string BackgroundToken { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,22 +1,21 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
|
||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
public class DemoDataModel
|
||||||
{
|
{
|
||||||
public class DemoDataModel
|
public int Index { get; set; }
|
||||||
{
|
|
||||||
public int Index { get; set; }
|
|
||||||
|
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
public bool IsSelected { get; set; }
|
public bool IsSelected { get; set; }
|
||||||
|
|
||||||
public string Remark { get; set; }
|
public string Remark { get; set; }
|
||||||
|
|
||||||
public DemoType Type { get; set; }
|
public DemoType Type { get; set; }
|
||||||
|
|
||||||
public string ImgPath { get; set; }
|
public string ImgPath { get; set; }
|
||||||
|
|
||||||
public List<DemoDataModel> DataList { get; set; }
|
public List<DemoDataModel> DataList { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,38 +1,37 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using GalaSoft.MvvmLight;
|
using GalaSoft.MvvmLight;
|
||||||
|
|
||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
public class DemoInfoModel : ViewModelBase
|
||||||
{
|
{
|
||||||
public class DemoInfoModel : ViewModelBase
|
public string Key { get; set; }
|
||||||
|
|
||||||
|
private string _title;
|
||||||
|
|
||||||
|
public string Title
|
||||||
{
|
{
|
||||||
public string Key { get; set; }
|
get => _title;
|
||||||
|
|
||||||
private string _title;
|
|
||||||
|
|
||||||
public string Title
|
|
||||||
{
|
|
||||||
get => _title;
|
|
||||||
#if NET40
|
#if NET40
|
||||||
set => Set(nameof(Title), ref _title, value);
|
set => Set(nameof(Title), ref _title, value);
|
||||||
#else
|
#else
|
||||||
set => Set(ref _title, value);
|
set => Set(ref _title, value);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
private int _selectedIndex;
|
private int _selectedIndex;
|
||||||
|
|
||||||
public int SelectedIndex
|
public int SelectedIndex
|
||||||
{
|
{
|
||||||
get => _selectedIndex;
|
get => _selectedIndex;
|
||||||
#if NET40
|
#if NET40
|
||||||
set => Set(nameof(SelectedIndex), ref _selectedIndex, value);
|
set => Set(nameof(SelectedIndex), ref _selectedIndex, value);
|
||||||
#else
|
#else
|
||||||
set => Set(ref _selectedIndex, value);
|
set => Set(ref _selectedIndex, value);
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsGroupEnabled { get; set; }
|
|
||||||
|
|
||||||
public IList<DemoItemModel> DemoItemList { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsGroupEnabled { get; set; }
|
||||||
|
|
||||||
|
public IList<DemoItemModel> DemoItemList { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,40 +1,39 @@
|
|||||||
using GalaSoft.MvvmLight;
|
using GalaSoft.MvvmLight;
|
||||||
|
|
||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
public class DemoItemModel : ObservableObject
|
||||||
{
|
{
|
||||||
public class DemoItemModel : ObservableObject
|
private bool _isVisible = true;
|
||||||
|
private string _queriesText = string.Empty;
|
||||||
|
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public string GroupName { get; set; }
|
||||||
|
|
||||||
|
public string TargetCtlName { get; set; }
|
||||||
|
|
||||||
|
public string ImageName { get; set; }
|
||||||
|
|
||||||
|
public bool IsNew { get; set; }
|
||||||
|
|
||||||
|
public string QueriesText
|
||||||
{
|
{
|
||||||
private bool _isVisible = true;
|
get => _queriesText;
|
||||||
private string _queriesText = string.Empty;
|
|
||||||
|
|
||||||
public string Name { get; set; }
|
|
||||||
|
|
||||||
public string GroupName { get; set; }
|
|
||||||
|
|
||||||
public string TargetCtlName { get; set; }
|
|
||||||
|
|
||||||
public string ImageName { get; set; }
|
|
||||||
|
|
||||||
public bool IsNew { get; set; }
|
|
||||||
|
|
||||||
public string QueriesText
|
|
||||||
{
|
|
||||||
get => _queriesText;
|
|
||||||
#if NET40
|
#if NET40
|
||||||
set => Set(nameof(QueriesText), ref _queriesText, value);
|
set => Set(nameof(QueriesText), ref _queriesText, value);
|
||||||
#else
|
#else
|
||||||
set => Set(ref _queriesText, value);
|
set => Set(ref _queriesText, value);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsVisible
|
public bool IsVisible
|
||||||
{
|
{
|
||||||
get => _isVisible;
|
get => _isVisible;
|
||||||
#if NET40
|
#if NET40
|
||||||
set => Set(nameof(IsVisible), ref _isVisible, value);
|
set => Set(nameof(IsVisible), ref _isVisible, value);
|
||||||
#else
|
#else
|
||||||
set => Set(ref _isVisible, value);
|
set => Set(ref _isVisible, value);
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,12 @@
|
|||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
|
|
||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
public class GeometryItemModel
|
||||||
{
|
{
|
||||||
public class GeometryItemModel
|
public Geometry Data { get; set; }
|
||||||
{
|
|
||||||
public Geometry Data { get; set; }
|
|
||||||
|
|
||||||
public string Key { get; set; }
|
public string Key { get; set; }
|
||||||
|
|
||||||
public bool Line { get; set; }
|
public bool Line { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -2,32 +2,31 @@
|
|||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
|
|
||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
|
|
||||||
|
public class PropertyGridDemoModel
|
||||||
{
|
{
|
||||||
public class PropertyGridDemoModel
|
[Category("Category1")]
|
||||||
{
|
public string String { get; set; }
|
||||||
[Category("Category1")]
|
|
||||||
public string String { get; set; }
|
|
||||||
|
|
||||||
[Category("Category2")]
|
[Category("Category2")]
|
||||||
public int Integer { get; set; }
|
public int Integer { get; set; }
|
||||||
|
|
||||||
[Category("Category2")]
|
[Category("Category2")]
|
||||||
public bool Boolean { get; set; }
|
public bool Boolean { get; set; }
|
||||||
|
|
||||||
[Category("Category1")]
|
[Category("Category1")]
|
||||||
public Gender Enum { get; set; }
|
public Gender Enum { get; set; }
|
||||||
|
|
||||||
public HorizontalAlignment HorizontalAlignment { get; set; }
|
public HorizontalAlignment HorizontalAlignment { get; set; }
|
||||||
|
|
||||||
public VerticalAlignment VerticalAlignment { get; set; }
|
public VerticalAlignment VerticalAlignment { get; set; }
|
||||||
|
|
||||||
public ImageSource ImageSource { get; set; }
|
public ImageSource ImageSource { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum Gender
|
public enum Gender
|
||||||
{
|
{
|
||||||
Male,
|
Male,
|
||||||
Female
|
Female
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
{
|
|
||||||
public class StepBarDemoModel
|
|
||||||
{
|
|
||||||
public string Header { get; set; }
|
|
||||||
|
|
||||||
public string Content { get; set; }
|
public class StepBarDemoModel
|
||||||
}
|
{
|
||||||
|
public string Header { get; set; }
|
||||||
|
|
||||||
|
public string Content { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
namespace HandyControlDemo.Data
|
namespace HandyControlDemo.Data;
|
||||||
{
|
|
||||||
public class TabControlDemoModel
|
|
||||||
{
|
|
||||||
public string Header { get; set; }
|
|
||||||
|
|
||||||
public string BackgroundToken { get; set; }
|
public class TabControlDemoModel
|
||||||
}
|
{
|
||||||
|
public string Header { get; set; }
|
||||||
|
|
||||||
|
public string BackgroundToken { get; set; }
|
||||||
}
|
}
|
||||||
@@ -41,6 +41,7 @@
|
|||||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\Helper\VersionHelper.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Tools\Helper\VersionHelper.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\Helper\Win32Helper.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Tools\Helper\Win32Helper.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\HighlightingProvider.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Tools\HighlightingProvider.cs" />
|
||||||
|
<Compile Include="$(MSBuildThisFileDirectory)Tools\ValidationRule\NumericUpDownDemoRule.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)UserControl\Basic\Avatar.xaml.cs">
|
<Compile Include="$(MSBuildThisFileDirectory)UserControl\Basic\Avatar.xaml.cs">
|
||||||
<DependentUpon>Avatar.xaml</DependentUpon>
|
<DependentUpon>Avatar.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -410,7 +411,6 @@
|
|||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Basic\ChatBoxViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Basic\ChatBoxViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Basic\InteractiveDialogViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Basic\InteractiveDialogViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Common\ComboBoxDemoViewModel.cs" />
|
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\AutoCompleteTextBoxDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\AutoCompleteTextBoxDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\BadgeDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\BadgeDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\CardDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\CardDemoViewModel.cs" />
|
||||||
@@ -421,13 +421,13 @@
|
|||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\NotificationDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\NotificationDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\NotifyIconDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\NotifyIconDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\PaginationDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\PaginationDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\SearchBarDemoViewModel.cs" />
|
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\SideMenuDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\SideMenuDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\SplitButtonDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\SplitButtonDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\SpriteDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\SpriteDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\StepBarDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\StepBarDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\TabControlDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\TabControlDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\TagDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\TagDemoViewModel.cs" />
|
||||||
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Common\InputElementDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\WindowDemoViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\WindowDemoViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\DemoViewModelBase`1.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\DemoViewModelBase`1.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Main\ItemsDisplayViewModel.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Main\ItemsDisplayViewModel.cs" />
|
||||||
|
|||||||
@@ -10,45 +10,44 @@ using HandyControlDemo.Tools;
|
|||||||
using HandyControlDemo.UserControl;
|
using HandyControlDemo.UserControl;
|
||||||
using HandyControlDemo.ViewModel;
|
using HandyControlDemo.ViewModel;
|
||||||
|
|
||||||
namespace HandyControlDemo
|
namespace HandyControlDemo;
|
||||||
|
|
||||||
|
public partial class MainWindow
|
||||||
{
|
{
|
||||||
public partial class MainWindow
|
public MainWindow() => InitializeComponent();
|
||||||
|
|
||||||
|
protected override void OnContentRendered(EventArgs e)
|
||||||
{
|
{
|
||||||
public MainWindow() => InitializeComponent();
|
base.OnContentRendered(e);
|
||||||
|
|
||||||
protected override void OnContentRendered(EventArgs e)
|
DataContext = ViewModelLocator.Instance.Main;
|
||||||
|
NonClientAreaContent = new NonClientAreaContent();
|
||||||
|
ControlMain.Content = new MainWindowContent();
|
||||||
|
|
||||||
|
GlobalShortcut.Init(new List<KeyBinding>
|
||||||
{
|
{
|
||||||
base.OnContentRendered(e);
|
new(ViewModelLocator.Instance.Main.GlobalShortcutInfoCmd, Key.I, ModifierKeys.Control | ModifierKeys.Alt),
|
||||||
|
new(ViewModelLocator.Instance.Main.GlobalShortcutWarningCmd, Key.E, ModifierKeys.Control | ModifierKeys.Alt)
|
||||||
|
});
|
||||||
|
|
||||||
DataContext = ViewModelLocator.Instance.Main;
|
Dialog.SetToken(this, MessageToken.MainWindow);
|
||||||
NonClientAreaContent = new NonClientAreaContent();
|
WindowAttach.SetIgnoreAltF4(this, true);
|
||||||
ControlMain.Content = new MainWindowContent();
|
|
||||||
|
|
||||||
GlobalShortcut.Init(new List<KeyBinding>
|
Messenger.Default.Send(true, MessageToken.FullSwitch);
|
||||||
{
|
Messenger.Default.Send(AssemblyHelper.CreateInternalInstance($"UserControl.{MessageToken.PracticalDemo}"), MessageToken.LoadShowContent);
|
||||||
new(ViewModelLocator.Instance.Main.GlobalShortcutInfoCmd, Key.I, ModifierKeys.Control | ModifierKeys.Alt),
|
}
|
||||||
new(ViewModelLocator.Instance.Main.GlobalShortcutWarningCmd, Key.E, ModifierKeys.Control | ModifierKeys.Alt)
|
|
||||||
});
|
|
||||||
|
|
||||||
Dialog.SetToken(this, MessageToken.MainWindow);
|
protected override void OnClosing(CancelEventArgs e)
|
||||||
WindowAttach.SetIgnoreAltF4(this, true);
|
{
|
||||||
|
if (GlobalData.NotifyIconIsShow)
|
||||||
Messenger.Default.Send(true, MessageToken.FullSwitch);
|
{
|
||||||
Messenger.Default.Send(AssemblyHelper.CreateInternalInstance($"UserControl.{MessageToken.PracticalDemo}"), MessageToken.LoadShowContent);
|
MessageBox.Info(Properties.Langs.Lang.AppClosingTip, Properties.Langs.Lang.Tip);
|
||||||
|
Hide();
|
||||||
|
e.Cancel = true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
protected override void OnClosing(CancelEventArgs e)
|
|
||||||
{
|
{
|
||||||
if (GlobalData.NotifyIconIsShow)
|
base.OnClosing(e);
|
||||||
{
|
|
||||||
MessageBox.Info(Properties.Langs.Lang.AppClosingTip, Properties.Langs.Lang.Tip);
|
|
||||||
Hide();
|
|
||||||
e.Cancel = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
base.OnClosing(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -4,16 +4,15 @@ using HandyControl.Data;
|
|||||||
using HandyControl.Themes;
|
using HandyControl.Themes;
|
||||||
using HandyControl.Tools;
|
using HandyControl.Tools;
|
||||||
|
|
||||||
namespace HandyControlDemo.Resources
|
namespace HandyControlDemo.Resources;
|
||||||
{
|
|
||||||
public class DemoTheme : Theme
|
|
||||||
{
|
|
||||||
public override ResourceDictionary GetSkin(SkinType skinType) =>
|
|
||||||
ResourceHelper.GetSkin(typeof(App).Assembly, "Resources/Themes", skinType);
|
|
||||||
|
|
||||||
public override ResourceDictionary GetTheme() => new()
|
public class DemoTheme : Theme
|
||||||
{
|
{
|
||||||
Source = new Uri("pack://application:,,,/HandyControlDemo;component/Resources/Themes/Theme.xaml")
|
public override ResourceDictionary GetSkin(SkinType skinType) =>
|
||||||
};
|
ResourceHelper.GetSkin(typeof(App).Assembly, "Resources/Themes", skinType);
|
||||||
}
|
|
||||||
|
public override ResourceDictionary GetTheme() => new()
|
||||||
|
{
|
||||||
|
Source = new Uri("pack://application:,,,/HandyControlDemo;component/Resources/Themes/Theme.xaml")
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -42,7 +42,6 @@
|
|||||||
|
|
||||||
<Style x:Key="ListBoxItemTransparent" BasedOn="{StaticResource ListBoxItemBaseStyle}" TargetType="ListBoxItem">
|
<Style x:Key="ListBoxItemTransparent" BasedOn="{StaticResource ListBoxItemBaseStyle}" TargetType="ListBoxItem">
|
||||||
<Setter Property="Visibility" Value="{Binding IsVisible,Converter={StaticResource Boolean2VisibilityConverter}}"/>
|
<Setter Property="Visibility" Value="{Binding IsVisible,Converter={StaticResource Boolean2VisibilityConverter}}"/>
|
||||||
<Setter Property="hc:BorderElement.CornerRadius" Value="4"/>
|
|
||||||
<Setter Property="Background" Value="Transparent"/>
|
<Setter Property="Background" Value="Transparent"/>
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
@@ -79,8 +78,10 @@
|
|||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<Style x:Key="ListBoxTransparent" BasedOn="{StaticResource ListBoxBaseStyle}" TargetType="ListBox">
|
<Style x:Key="ListBoxTransparent" BasedOn="{StaticResource ListBoxBaseStyle}" TargetType="ListBox">
|
||||||
|
<Setter Property="hc:BorderElement.CornerRadius" Value="4"/>
|
||||||
<Setter Property="Background" Value="Transparent"/>
|
<Setter Property="Background" Value="Transparent"/>
|
||||||
<Setter Property="ItemContainerStyle" Value="{StaticResource ListBoxItemTransparent}"/>
|
<Setter Property="ItemContainerStyle" Value="{StaticResource ListBoxItemTransparent}"/>
|
||||||
|
<Setter Property="hc:ScrollViewer.IsInertiaEnabled" Value="True"/>
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<ItemsPanelTemplate x:Key="FluidMoveBehaviorWrapPanelItemsPanelTemplate">
|
<ItemsPanelTemplate x:Key="FluidMoveBehaviorWrapPanelItemsPanelTemplate">
|
||||||
@@ -176,7 +177,7 @@
|
|||||||
</Style>
|
</Style>
|
||||||
</ControlTemplate.Resources>
|
</ControlTemplate.Resources>
|
||||||
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
|
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
|
||||||
<ScrollViewer Name="PART_ScrollViewer" Padding="{TemplateBinding Padding}" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" CanContentScroll="True" Content="{Binding TextArea,RelativeSource={RelativeSource TemplatedParent}}" Focusable="False" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" />
|
<hc:ScrollViewer IsInertiaEnabled="True" Name="PART_ScrollViewer" Padding="{TemplateBinding Padding}" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" CanContentScroll="True" Content="{Binding TextArea,RelativeSource={RelativeSource TemplatedParent}}" Focusable="False" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" />
|
||||||
</Border>
|
</Border>
|
||||||
<ControlTemplate.Triggers>
|
<ControlTemplate.Triggers>
|
||||||
<Trigger Property="WordWrap" Value="True">
|
<Trigger Property="WordWrap" Value="True">
|
||||||
|
|||||||
@@ -12,443 +12,430 @@ using HandyControlDemo.Properties.Langs;
|
|||||||
using HandyControlDemo.Tools.Converter;
|
using HandyControlDemo.Tools.Converter;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace HandyControlDemo.Service
|
namespace HandyControlDemo.Service;
|
||||||
|
|
||||||
|
public class DataService
|
||||||
{
|
{
|
||||||
public class DataService
|
internal ObservableCollection<TabControlDemoModel> GetTabControlDemoDataList()
|
||||||
{
|
{
|
||||||
internal ObservableCollection<TabControlDemoModel> GetTabControlDemoDataList()
|
return new()
|
||||||
{
|
{
|
||||||
return new()
|
new TabControlDemoModel
|
||||||
{
|
{
|
||||||
new TabControlDemoModel
|
Header = "Success",
|
||||||
{
|
BackgroundToken = ResourceToken.SuccessBrush
|
||||||
Header = "Success",
|
},
|
||||||
BackgroundToken = ResourceToken.SuccessBrush
|
new TabControlDemoModel
|
||||||
},
|
|
||||||
new TabControlDemoModel
|
|
||||||
{
|
|
||||||
Header = "Primary",
|
|
||||||
BackgroundToken = ResourceToken.PrimaryBrush
|
|
||||||
},
|
|
||||||
new TabControlDemoModel
|
|
||||||
{
|
|
||||||
Header = "Warning",
|
|
||||||
BackgroundToken = ResourceToken.WarningBrush
|
|
||||||
},
|
|
||||||
new TabControlDemoModel
|
|
||||||
{
|
|
||||||
Header = "Danger",
|
|
||||||
BackgroundToken = ResourceToken.DangerBrush
|
|
||||||
},
|
|
||||||
new TabControlDemoModel
|
|
||||||
{
|
|
||||||
Header = "Info",
|
|
||||||
BackgroundToken = ResourceToken.InfoBrush
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
internal List<DemoDataModel> GetDemoDataList()
|
|
||||||
{
|
|
||||||
var list = new List<DemoDataModel>();
|
|
||||||
for (var i = 1; i <= 20; i++)
|
|
||||||
{
|
{
|
||||||
var dataList = new List<DemoDataModel>();
|
Header = "Primary",
|
||||||
for (var j = 0; j < 3; j++)
|
BackgroundToken = ResourceToken.PrimaryBrush
|
||||||
{
|
},
|
||||||
dataList.Add(new DemoDataModel
|
new TabControlDemoModel
|
||||||
{
|
{
|
||||||
Index = j,
|
Header = "Warning",
|
||||||
IsSelected = j % 2 == 0,
|
BackgroundToken = ResourceToken.WarningBrush
|
||||||
Name = $"SubName{j}",
|
},
|
||||||
Type = (DemoType) j
|
new TabControlDemoModel
|
||||||
});
|
{
|
||||||
}
|
Header = "Danger",
|
||||||
var model = new DemoDataModel
|
BackgroundToken = ResourceToken.DangerBrush
|
||||||
{
|
},
|
||||||
Index = i,
|
new TabControlDemoModel
|
||||||
IsSelected = i % 2 == 0,
|
{
|
||||||
Name = $"Name{i}",
|
Header = "Info",
|
||||||
Type = (DemoType) (i % 6 + 1),
|
BackgroundToken = ResourceToken.InfoBrush
|
||||||
DataList = dataList,
|
|
||||||
ImgPath = $"/HandyControlDemo;component/Resources/Img/Avatar/avatar{i % 6 + 1}.png",
|
|
||||||
Remark = new string(i.ToString()[0], 10)
|
|
||||||
};
|
|
||||||
list.Add(model);
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
return list;
|
internal List<DemoDataModel> GetDemoDataList()
|
||||||
}
|
{
|
||||||
|
var list = new List<DemoDataModel>();
|
||||||
internal List<DemoDataModel> GetDemoDataList(int count)
|
for (var i = 1; i <= 20; i++)
|
||||||
{
|
{
|
||||||
var list = new List<DemoDataModel>();
|
var dataList = new List<DemoDataModel>();
|
||||||
for (var i = 1; i <= count; i++)
|
for (var j = 0; j < 3; j++)
|
||||||
{
|
{
|
||||||
var index = i % 6 + 1;
|
dataList.Add(new DemoDataModel
|
||||||
var model = new DemoDataModel
|
|
||||||
{
|
{
|
||||||
Index = i,
|
Index = j,
|
||||||
IsSelected = i % 2 == 0,
|
IsSelected = j % 2 == 0,
|
||||||
Name = $"Name{i}",
|
Name = $"SubName{j}",
|
||||||
Type = (DemoType) index,
|
Type = (DemoType) j
|
||||||
ImgPath = $"/HandyControlDemo;component/Resources/Img/Avatar/avatar{index}.png",
|
|
||||||
Remark = new string(i.ToString()[0], 10)
|
|
||||||
};
|
|
||||||
list.Add(model);
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal List<string> GetComboBoxDemoDataList()
|
|
||||||
{
|
|
||||||
var converter = new StringRepeatConverter();
|
|
||||||
var list = new List<string>();
|
|
||||||
for (var i = 1; i <= 9; i++)
|
|
||||||
{
|
|
||||||
list.Add($"{converter.Convert(Lang.Text, null, i, CultureInfo.CurrentCulture)}{i}");
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal List<AvatarModel> GetContributorDataList()
|
|
||||||
{
|
|
||||||
var client = new WebClient();
|
|
||||||
client.Headers.Add("User-Agent", "request");
|
|
||||||
var list = new List<AvatarModel>();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var json = client.DownloadString(new Uri("https://api.github.com/repos/nabian/handycontrol/contributors"));
|
|
||||||
var objList = JsonConvert.DeserializeObject<List<dynamic>>(json);
|
|
||||||
list.AddRange(objList.Select(item => new AvatarModel
|
|
||||||
{
|
|
||||||
DisplayName = item.login,
|
|
||||||
AvatarUri = item.avatar_url,
|
|
||||||
Link = item.html_url
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
HandyControl.Controls.MessageBox.Error(e.Message, Lang.Error);
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal List<AvatarModel> GetBlogDataList()
|
|
||||||
{
|
|
||||||
return new()
|
|
||||||
{
|
|
||||||
new AvatarModel
|
|
||||||
{
|
|
||||||
DisplayName = "林德熙",
|
|
||||||
AvatarUri = "https://avatars3.githubusercontent.com/u/16054566?s=400&v=4",
|
|
||||||
Link = "https://blog.lindexi.com/"
|
|
||||||
},
|
|
||||||
new AvatarModel
|
|
||||||
{
|
|
||||||
DisplayName = "吕毅",
|
|
||||||
AvatarUri = "https://avatars2.githubusercontent.com/u/9959623?s=400&v=4",
|
|
||||||
Link = "https://blog.walterlv.com/"
|
|
||||||
},
|
|
||||||
new AvatarModel
|
|
||||||
{
|
|
||||||
DisplayName = "DinoChan",
|
|
||||||
AvatarUri = "https://avatars1.githubusercontent.com/u/6076257?s=400&v=4",
|
|
||||||
Link = "https://www.cnblogs.com/dino623/"
|
|
||||||
},
|
|
||||||
new AvatarModel
|
|
||||||
{
|
|
||||||
DisplayName = "noctwolf",
|
|
||||||
AvatarUri = "https://avatars3.githubusercontent.com/u/21022467?s=400&v=4",
|
|
||||||
Link = "https://www.cnblogs.com/noctwolf/"
|
|
||||||
},
|
|
||||||
new AvatarModel
|
|
||||||
{
|
|
||||||
DisplayName = "关关长语",
|
|
||||||
AvatarUri = "https://avatars3.githubusercontent.com/u/25916858?s=400&v=4",
|
|
||||||
Link = "https://blog.csdn.net/qq_28806349/category_11213909.html"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
internal List<AvatarModel> GetProjectDataList()
|
|
||||||
{
|
|
||||||
return new()
|
|
||||||
{
|
|
||||||
new AvatarModel
|
|
||||||
{
|
|
||||||
DisplayName = "phpEnv",
|
|
||||||
AvatarUri = "https://cdn.phpenv.cn:444/logo.png",
|
|
||||||
Link = "https://www.phpenv.cn/"
|
|
||||||
},
|
|
||||||
new AvatarModel
|
|
||||||
{
|
|
||||||
DisplayName = "AutumnBox",
|
|
||||||
AvatarUri = "https://raw.githubusercontent.com/zsh2401/AutumnBox/master/src/AutumnBox.GUI/Resources/Images/icon.png",
|
|
||||||
Link = "https://github.com/zsh2401/AutumnBox"
|
|
||||||
},
|
|
||||||
new AvatarModel
|
|
||||||
{
|
|
||||||
DisplayName = "quicker",
|
|
||||||
AvatarUri = "https://files.getquicker.net/_sitefiles/quicker_round_128.png",
|
|
||||||
Link = "https://getquicker.net"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
internal List<AvatarModel> GetWebsiteDataList()
|
|
||||||
{
|
|
||||||
return new()
|
|
||||||
{
|
|
||||||
new AvatarModel
|
|
||||||
{
|
|
||||||
DisplayName = "Dotnet9",
|
|
||||||
AvatarUri = "https://pic.cnblogs.com/avatar/1663243/20191124121029.png",
|
|
||||||
Link = "https://dotnet9.com/"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
internal ObservableCollection<CardModel> GetCardDataList()
|
|
||||||
{
|
|
||||||
return new()
|
|
||||||
{
|
|
||||||
new CardModel
|
|
||||||
{
|
|
||||||
Header = "Atomic",
|
|
||||||
Content = "/HandyControlDemo;component/Resources/Img/Album/1.jpg",
|
|
||||||
Footer = "Stive Morgan"
|
|
||||||
},
|
|
||||||
new CardModel
|
|
||||||
{
|
|
||||||
Header = "Zinderlong",
|
|
||||||
Content = "/HandyControlDemo;component/Resources/Img/Album/2.jpg",
|
|
||||||
Footer = "Zonderling"
|
|
||||||
},
|
|
||||||
new CardModel
|
|
||||||
{
|
|
||||||
Header = "Busy Doin' Nothin'",
|
|
||||||
Content = "/HandyControlDemo;component/Resources/Img/Album/3.jpg",
|
|
||||||
Footer = "Ace Wilder"
|
|
||||||
},
|
|
||||||
new CardModel
|
|
||||||
{
|
|
||||||
Header = "Wrong",
|
|
||||||
Content = "/HandyControlDemo;component/Resources/Img/Album/4.jpg",
|
|
||||||
Footer = "Blaxy Girls"
|
|
||||||
},
|
|
||||||
new CardModel
|
|
||||||
{
|
|
||||||
Header = "The Lights",
|
|
||||||
Content = "/HandyControlDemo;component/Resources/Img/Album/5.jpg",
|
|
||||||
Footer = "Panda Eyes"
|
|
||||||
},
|
|
||||||
new CardModel
|
|
||||||
{
|
|
||||||
Header = "EA7-50-Cent Disco",
|
|
||||||
Content = "/HandyControlDemo;component/Resources/Img/Album/6.jpg",
|
|
||||||
Footer = "еяхат музыка"
|
|
||||||
},
|
|
||||||
new CardModel
|
|
||||||
{
|
|
||||||
Header = "Monsters",
|
|
||||||
Content = "/HandyControlDemo;component/Resources/Img/Album/7.jpg",
|
|
||||||
Footer = "Different Heaven"
|
|
||||||
},
|
|
||||||
new CardModel
|
|
||||||
{
|
|
||||||
Header = "Gangsta Walk",
|
|
||||||
Content = "/HandyControlDemo;component/Resources/Img/Album/8.jpg",
|
|
||||||
Footer = "Illusionize"
|
|
||||||
},
|
|
||||||
new CardModel
|
|
||||||
{
|
|
||||||
Header = "Won't Back Down",
|
|
||||||
Content = "/HandyControlDemo;component/Resources/Img/Album/9.jpg",
|
|
||||||
Footer = "Boehm / Benjamin Francis Leftwich"
|
|
||||||
},
|
|
||||||
new CardModel
|
|
||||||
{
|
|
||||||
Header = "Katchi",
|
|
||||||
Content = "/HandyControlDemo;component/Resources/Img/Album/10.jpg",
|
|
||||||
Footer = "Ofenbach / Nick Waterhouse"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
internal CardModel GetCardData()
|
|
||||||
{
|
|
||||||
return new()
|
|
||||||
{
|
|
||||||
Content = $"/HandyControlDemo;component/Resources/Img/Album/{DateTime.Now.Second % 10 + 1}.jpg"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
internal List<StepBarDemoModel> GetStepBarDemoDataList()
|
|
||||||
{
|
|
||||||
return new()
|
|
||||||
{
|
|
||||||
new StepBarDemoModel
|
|
||||||
{
|
|
||||||
Header = LangKeys.Step,
|
|
||||||
Content = LangKeys.Register
|
|
||||||
},
|
|
||||||
new StepBarDemoModel
|
|
||||||
{
|
|
||||||
Header = LangKeys.Step,
|
|
||||||
Content = LangKeys.BasicInfo
|
|
||||||
},
|
|
||||||
new StepBarDemoModel
|
|
||||||
{
|
|
||||||
Header = LangKeys.Step,
|
|
||||||
Content = LangKeys.UploadFile
|
|
||||||
},
|
|
||||||
new StepBarDemoModel
|
|
||||||
{
|
|
||||||
Header = LangKeys.Step,
|
|
||||||
Content = LangKeys.Complete
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
internal ObservableCollection<CoverViewDemoModel> GetCoverViewDemoDataList()
|
|
||||||
{
|
|
||||||
return new()
|
|
||||||
{
|
|
||||||
new CoverViewDemoModel
|
|
||||||
{
|
|
||||||
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/1.jpg",
|
|
||||||
BackgroundToken = ResourceToken.SuccessBrush
|
|
||||||
},
|
|
||||||
new CoverViewDemoModel
|
|
||||||
{
|
|
||||||
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/2.jpg",
|
|
||||||
BackgroundToken = ResourceToken.PrimaryBrush
|
|
||||||
},
|
|
||||||
new CoverViewDemoModel
|
|
||||||
{
|
|
||||||
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/3.jpg",
|
|
||||||
BackgroundToken = ResourceToken.WarningBrush
|
|
||||||
},
|
|
||||||
new CoverViewDemoModel
|
|
||||||
{
|
|
||||||
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/4.jpg",
|
|
||||||
BackgroundToken = ResourceToken.DangerBrush
|
|
||||||
},
|
|
||||||
new CoverViewDemoModel
|
|
||||||
{
|
|
||||||
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/5.jpg",
|
|
||||||
BackgroundToken = ResourceToken.SuccessBrush
|
|
||||||
},
|
|
||||||
new CoverViewDemoModel
|
|
||||||
{
|
|
||||||
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/6.jpg",
|
|
||||||
BackgroundToken = ResourceToken.PrimaryBrush
|
|
||||||
},
|
|
||||||
new CoverViewDemoModel
|
|
||||||
{
|
|
||||||
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/7.jpg",
|
|
||||||
BackgroundToken = ResourceToken.InfoBrush
|
|
||||||
},
|
|
||||||
new CoverViewDemoModel
|
|
||||||
{
|
|
||||||
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/8.jpg",
|
|
||||||
BackgroundToken = ResourceToken.WarningBrush
|
|
||||||
},
|
|
||||||
new CoverViewDemoModel
|
|
||||||
{
|
|
||||||
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/9.jpg",
|
|
||||||
BackgroundToken = ResourceToken.PrimaryBrush
|
|
||||||
},
|
|
||||||
new CoverViewDemoModel
|
|
||||||
{
|
|
||||||
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/10.jpg",
|
|
||||||
BackgroundToken = ResourceToken.DangerBrush
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
internal List<DemoInfoModel> GetDemoInfo()
|
|
||||||
{
|
|
||||||
var infoList = new List<DemoInfoModel>();
|
|
||||||
|
|
||||||
var stream = Application.GetResourceStream(new Uri("Data/DemoInfo.json", UriKind.Relative))?.Stream;
|
|
||||||
if (stream == null) return infoList;
|
|
||||||
|
|
||||||
string jsonStr;
|
|
||||||
using (var reader = new StreamReader(stream))
|
|
||||||
{
|
|
||||||
jsonStr = reader.ReadToEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
var jsonObj = JsonConvert.DeserializeObject<dynamic>(jsonStr);
|
|
||||||
foreach (var item in jsonObj)
|
|
||||||
{
|
|
||||||
var titleKey = (string) item.title;
|
|
||||||
var title = titleKey;
|
|
||||||
List<DemoItemModel> list = Convert2DemoItemList(item.demoItemList);
|
|
||||||
|
|
||||||
var demoInfoModel = new DemoInfoModel
|
|
||||||
{
|
|
||||||
Key = titleKey,
|
|
||||||
Title = title,
|
|
||||||
DemoItemList = list,
|
|
||||||
SelectedIndex = (int) item.selectedIndex,
|
|
||||||
IsGroupEnabled = (bool) item.group
|
|
||||||
};
|
|
||||||
|
|
||||||
infoList.Add(demoInfoModel);
|
|
||||||
}
|
|
||||||
|
|
||||||
return infoList;
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<DemoItemModel> Convert2DemoItemList(dynamic list)
|
|
||||||
{
|
|
||||||
var resultList = new List<DemoItemModel>();
|
|
||||||
|
|
||||||
foreach (var item in list)
|
|
||||||
{
|
|
||||||
var name = (string) item[0];
|
|
||||||
string targetCtlName = item[1];
|
|
||||||
string imageName = item[2];
|
|
||||||
var isNew = !string.IsNullOrEmpty((string) item[3]);
|
|
||||||
var groupName = (string) item[4];
|
|
||||||
if (string.IsNullOrEmpty(groupName))
|
|
||||||
{
|
|
||||||
groupName = "Misc";
|
|
||||||
}
|
|
||||||
|
|
||||||
resultList.Add(new DemoItemModel
|
|
||||||
{
|
|
||||||
Name = name,
|
|
||||||
TargetCtlName = targetCtlName,
|
|
||||||
ImageName = $"../../Resources/Img/LeftMainContent/{imageName}.png",
|
|
||||||
IsNew = isNew,
|
|
||||||
GroupName = groupName
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
var model = new DemoDataModel
|
||||||
return resultList;
|
{
|
||||||
|
Index = i,
|
||||||
|
IsSelected = i % 2 == 0,
|
||||||
|
Name = $"Name{i}",
|
||||||
|
Type = (DemoType) (i % 6 + 1),
|
||||||
|
DataList = dataList,
|
||||||
|
ImgPath = $"/HandyControlDemo;component/Resources/Img/Avatar/avatar{i % 6 + 1}.png",
|
||||||
|
Remark = new string(i.ToString()[0], 10)
|
||||||
|
};
|
||||||
|
list.Add(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetDemoUrl(DemoInfoModel demoInfo, DemoItemModel demoItem)
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal List<DemoDataModel> GetDemoDataList(int count)
|
||||||
|
{
|
||||||
|
var list = new List<DemoDataModel>();
|
||||||
|
for (var i = 1; i <= count; i++)
|
||||||
{
|
{
|
||||||
var key = demoInfo.Key switch
|
var index = i % 6 + 1;
|
||||||
|
var model = new DemoDataModel
|
||||||
{
|
{
|
||||||
"Styles" => "native_controls",
|
Index = i,
|
||||||
"Controls" => "extend_controls",
|
IsSelected = i % 2 == 0,
|
||||||
"Tools" => "tools",
|
Name = $"Name{i}",
|
||||||
_ => string.Empty
|
Type = (DemoType) index,
|
||||||
|
ImgPath = $"/HandyControlDemo;component/Resources/Img/Avatar/avatar{index}.png",
|
||||||
|
Remark = new string(i.ToString()[0], 10)
|
||||||
|
};
|
||||||
|
list.Add(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal List<AvatarModel> GetContributorDataList()
|
||||||
|
{
|
||||||
|
var client = new WebClient();
|
||||||
|
client.Headers.Add("User-Agent", "request");
|
||||||
|
var list = new List<AvatarModel>();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var json = client.DownloadString(new Uri("https://api.github.com/repos/nabian/handycontrol/contributors"));
|
||||||
|
var objList = JsonConvert.DeserializeObject<List<dynamic>>(json);
|
||||||
|
list.AddRange(objList.Select(item => new AvatarModel
|
||||||
|
{
|
||||||
|
DisplayName = item.login,
|
||||||
|
AvatarUri = item.avatar_url,
|
||||||
|
Link = item.html_url
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
HandyControl.Controls.MessageBox.Error(e.Message, Lang.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal List<AvatarModel> GetBlogDataList()
|
||||||
|
{
|
||||||
|
return new()
|
||||||
|
{
|
||||||
|
new AvatarModel
|
||||||
|
{
|
||||||
|
DisplayName = "林德熙",
|
||||||
|
AvatarUri = "https://avatars3.githubusercontent.com/u/16054566?s=400&v=4",
|
||||||
|
Link = "https://blog.lindexi.com/"
|
||||||
|
},
|
||||||
|
new AvatarModel
|
||||||
|
{
|
||||||
|
DisplayName = "吕毅",
|
||||||
|
AvatarUri = "https://avatars2.githubusercontent.com/u/9959623?s=400&v=4",
|
||||||
|
Link = "https://blog.walterlv.com/"
|
||||||
|
},
|
||||||
|
new AvatarModel
|
||||||
|
{
|
||||||
|
DisplayName = "DinoChan",
|
||||||
|
AvatarUri = "https://avatars1.githubusercontent.com/u/6076257?s=400&v=4",
|
||||||
|
Link = "https://www.cnblogs.com/dino623/"
|
||||||
|
},
|
||||||
|
new AvatarModel
|
||||||
|
{
|
||||||
|
DisplayName = "noctwolf",
|
||||||
|
AvatarUri = "https://avatars3.githubusercontent.com/u/21022467?s=400&v=4",
|
||||||
|
Link = "https://www.cnblogs.com/noctwolf/"
|
||||||
|
},
|
||||||
|
new AvatarModel
|
||||||
|
{
|
||||||
|
DisplayName = "关关长语",
|
||||||
|
AvatarUri = "https://avatars3.githubusercontent.com/u/25916858?s=400&v=4",
|
||||||
|
Link = "https://blog.csdn.net/qq_28806349/category_11213909.html"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
internal List<AvatarModel> GetProjectDataList()
|
||||||
|
{
|
||||||
|
return new()
|
||||||
|
{
|
||||||
|
new AvatarModel
|
||||||
|
{
|
||||||
|
DisplayName = "phpEnv",
|
||||||
|
AvatarUri = "https://cdn.phpenv.cn:444/logo.png",
|
||||||
|
Link = "https://www.phpenv.cn/"
|
||||||
|
},
|
||||||
|
new AvatarModel
|
||||||
|
{
|
||||||
|
DisplayName = "AutumnBox",
|
||||||
|
AvatarUri = "https://raw.githubusercontent.com/zsh2401/AutumnBox/master/src/AutumnBox.GUI/Resources/Images/icon.png",
|
||||||
|
Link = "https://github.com/zsh2401/AutumnBox"
|
||||||
|
},
|
||||||
|
new AvatarModel
|
||||||
|
{
|
||||||
|
DisplayName = "quicker",
|
||||||
|
AvatarUri = "https://files.getquicker.net/_sitefiles/quicker_round_128.png",
|
||||||
|
Link = "https://getquicker.net"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
internal List<AvatarModel> GetWebsiteDataList()
|
||||||
|
{
|
||||||
|
return new()
|
||||||
|
{
|
||||||
|
new AvatarModel
|
||||||
|
{
|
||||||
|
DisplayName = "Dotnet9",
|
||||||
|
AvatarUri = "https://pic.cnblogs.com/avatar/1663243/20191124121029.png",
|
||||||
|
Link = "https://dotnet9.com/"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
internal ObservableCollection<CardModel> GetCardDataList()
|
||||||
|
{
|
||||||
|
return new()
|
||||||
|
{
|
||||||
|
new CardModel
|
||||||
|
{
|
||||||
|
Header = "Atomic",
|
||||||
|
Content = "/HandyControlDemo;component/Resources/Img/Album/1.jpg",
|
||||||
|
Footer = "Stive Morgan"
|
||||||
|
},
|
||||||
|
new CardModel
|
||||||
|
{
|
||||||
|
Header = "Zinderlong",
|
||||||
|
Content = "/HandyControlDemo;component/Resources/Img/Album/2.jpg",
|
||||||
|
Footer = "Zonderling"
|
||||||
|
},
|
||||||
|
new CardModel
|
||||||
|
{
|
||||||
|
Header = "Busy Doin' Nothin'",
|
||||||
|
Content = "/HandyControlDemo;component/Resources/Img/Album/3.jpg",
|
||||||
|
Footer = "Ace Wilder"
|
||||||
|
},
|
||||||
|
new CardModel
|
||||||
|
{
|
||||||
|
Header = "Wrong",
|
||||||
|
Content = "/HandyControlDemo;component/Resources/Img/Album/4.jpg",
|
||||||
|
Footer = "Blaxy Girls"
|
||||||
|
},
|
||||||
|
new CardModel
|
||||||
|
{
|
||||||
|
Header = "The Lights",
|
||||||
|
Content = "/HandyControlDemo;component/Resources/Img/Album/5.jpg",
|
||||||
|
Footer = "Panda Eyes"
|
||||||
|
},
|
||||||
|
new CardModel
|
||||||
|
{
|
||||||
|
Header = "EA7-50-Cent Disco",
|
||||||
|
Content = "/HandyControlDemo;component/Resources/Img/Album/6.jpg",
|
||||||
|
Footer = "еяхат музыка"
|
||||||
|
},
|
||||||
|
new CardModel
|
||||||
|
{
|
||||||
|
Header = "Monsters",
|
||||||
|
Content = "/HandyControlDemo;component/Resources/Img/Album/7.jpg",
|
||||||
|
Footer = "Different Heaven"
|
||||||
|
},
|
||||||
|
new CardModel
|
||||||
|
{
|
||||||
|
Header = "Gangsta Walk",
|
||||||
|
Content = "/HandyControlDemo;component/Resources/Img/Album/8.jpg",
|
||||||
|
Footer = "Illusionize"
|
||||||
|
},
|
||||||
|
new CardModel
|
||||||
|
{
|
||||||
|
Header = "Won't Back Down",
|
||||||
|
Content = "/HandyControlDemo;component/Resources/Img/Album/9.jpg",
|
||||||
|
Footer = "Boehm / Benjamin Francis Leftwich"
|
||||||
|
},
|
||||||
|
new CardModel
|
||||||
|
{
|
||||||
|
Header = "Katchi",
|
||||||
|
Content = "/HandyControlDemo;component/Resources/Img/Album/10.jpg",
|
||||||
|
Footer = "Ofenbach / Nick Waterhouse"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
internal CardModel GetCardData()
|
||||||
|
{
|
||||||
|
return new()
|
||||||
|
{
|
||||||
|
Content = $"/HandyControlDemo;component/Resources/Img/Album/{DateTime.Now.Second % 10 + 1}.jpg"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
internal List<StepBarDemoModel> GetStepBarDemoDataList()
|
||||||
|
{
|
||||||
|
return new()
|
||||||
|
{
|
||||||
|
new StepBarDemoModel
|
||||||
|
{
|
||||||
|
Header = LangKeys.Step,
|
||||||
|
Content = LangKeys.Register
|
||||||
|
},
|
||||||
|
new StepBarDemoModel
|
||||||
|
{
|
||||||
|
Header = LangKeys.Step,
|
||||||
|
Content = LangKeys.BasicInfo
|
||||||
|
},
|
||||||
|
new StepBarDemoModel
|
||||||
|
{
|
||||||
|
Header = LangKeys.Step,
|
||||||
|
Content = LangKeys.UploadFile
|
||||||
|
},
|
||||||
|
new StepBarDemoModel
|
||||||
|
{
|
||||||
|
Header = LangKeys.Step,
|
||||||
|
Content = LangKeys.Complete
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
internal ObservableCollection<CoverViewDemoModel> GetCoverViewDemoDataList()
|
||||||
|
{
|
||||||
|
return new()
|
||||||
|
{
|
||||||
|
new CoverViewDemoModel
|
||||||
|
{
|
||||||
|
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/1.jpg",
|
||||||
|
BackgroundToken = ResourceToken.SuccessBrush
|
||||||
|
},
|
||||||
|
new CoverViewDemoModel
|
||||||
|
{
|
||||||
|
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/2.jpg",
|
||||||
|
BackgroundToken = ResourceToken.PrimaryBrush
|
||||||
|
},
|
||||||
|
new CoverViewDemoModel
|
||||||
|
{
|
||||||
|
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/3.jpg",
|
||||||
|
BackgroundToken = ResourceToken.WarningBrush
|
||||||
|
},
|
||||||
|
new CoverViewDemoModel
|
||||||
|
{
|
||||||
|
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/4.jpg",
|
||||||
|
BackgroundToken = ResourceToken.DangerBrush
|
||||||
|
},
|
||||||
|
new CoverViewDemoModel
|
||||||
|
{
|
||||||
|
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/5.jpg",
|
||||||
|
BackgroundToken = ResourceToken.SuccessBrush
|
||||||
|
},
|
||||||
|
new CoverViewDemoModel
|
||||||
|
{
|
||||||
|
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/6.jpg",
|
||||||
|
BackgroundToken = ResourceToken.PrimaryBrush
|
||||||
|
},
|
||||||
|
new CoverViewDemoModel
|
||||||
|
{
|
||||||
|
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/7.jpg",
|
||||||
|
BackgroundToken = ResourceToken.InfoBrush
|
||||||
|
},
|
||||||
|
new CoverViewDemoModel
|
||||||
|
{
|
||||||
|
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/8.jpg",
|
||||||
|
BackgroundToken = ResourceToken.WarningBrush
|
||||||
|
},
|
||||||
|
new CoverViewDemoModel
|
||||||
|
{
|
||||||
|
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/9.jpg",
|
||||||
|
BackgroundToken = ResourceToken.PrimaryBrush
|
||||||
|
},
|
||||||
|
new CoverViewDemoModel
|
||||||
|
{
|
||||||
|
ImgPath = "/HandyControlDemo;component/Resources/Img/Album/10.jpg",
|
||||||
|
BackgroundToken = ResourceToken.DangerBrush
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
internal List<DemoInfoModel> GetDemoInfo()
|
||||||
|
{
|
||||||
|
var infoList = new List<DemoInfoModel>();
|
||||||
|
|
||||||
|
var stream = Application.GetResourceStream(new Uri("Data/DemoInfo.json", UriKind.Relative))?.Stream;
|
||||||
|
if (stream == null) return infoList;
|
||||||
|
|
||||||
|
string jsonStr;
|
||||||
|
using (var reader = new StreamReader(stream))
|
||||||
|
{
|
||||||
|
jsonStr = reader.ReadToEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
var jsonObj = JsonConvert.DeserializeObject<dynamic>(jsonStr);
|
||||||
|
foreach (var item in jsonObj)
|
||||||
|
{
|
||||||
|
var titleKey = (string) item.title;
|
||||||
|
var title = titleKey;
|
||||||
|
List<DemoItemModel> list = Convert2DemoItemList(item.demoItemList);
|
||||||
|
|
||||||
|
var demoInfoModel = new DemoInfoModel
|
||||||
|
{
|
||||||
|
Key = titleKey,
|
||||||
|
Title = title,
|
||||||
|
DemoItemList = list,
|
||||||
|
SelectedIndex = (int) item.selectedIndex,
|
||||||
|
IsGroupEnabled = (bool) item.group
|
||||||
};
|
};
|
||||||
|
|
||||||
var domainName = LangProvider.Culture == null || LangProvider.Culture.Name.ToLower() == "zh-cn"
|
infoList.Add(demoInfoModel);
|
||||||
? "handyorg"
|
|
||||||
: "ghost1372";
|
|
||||||
return $"https://{domainName}.github.io/handycontrol/{key}/{demoItem.Name[0].ToString().ToLower()}{demoItem.Name.Substring(1)}";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return infoList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<DemoItemModel> Convert2DemoItemList(dynamic list)
|
||||||
|
{
|
||||||
|
var resultList = new List<DemoItemModel>();
|
||||||
|
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
var name = (string) item[0];
|
||||||
|
string targetCtlName = item[1];
|
||||||
|
string imageName = item[2];
|
||||||
|
var isNew = !string.IsNullOrEmpty((string) item[3]);
|
||||||
|
var groupName = (string) item[4];
|
||||||
|
if (string.IsNullOrEmpty(groupName))
|
||||||
|
{
|
||||||
|
groupName = "Misc";
|
||||||
|
}
|
||||||
|
|
||||||
|
resultList.Add(new DemoItemModel
|
||||||
|
{
|
||||||
|
Name = name,
|
||||||
|
TargetCtlName = targetCtlName,
|
||||||
|
ImageName = $"../../Resources/Img/LeftMainContent/{imageName}.png",
|
||||||
|
IsNew = isNew,
|
||||||
|
GroupName = groupName
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetDemoUrl(DemoInfoModel demoInfo, DemoItemModel demoItem)
|
||||||
|
{
|
||||||
|
var key = demoInfo.Key switch
|
||||||
|
{
|
||||||
|
"Styles" => "native_controls",
|
||||||
|
"Controls" => "extend_controls",
|
||||||
|
"Tools" => "tools",
|
||||||
|
_ => string.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
var domainName = LangProvider.Culture == null || LangProvider.Culture.Name.ToLower() == "zh-cn"
|
||||||
|
? "handyorg"
|
||||||
|
: "ghost1372";
|
||||||
|
return $"https://{domainName}.github.io/handycontrol/{key}/{demoItem.Name[0].ToString().ToLower()}{demoItem.Name.Substring(1)}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,29 +5,28 @@ using System.Windows.Media;
|
|||||||
using HandyControl.Data;
|
using HandyControl.Data;
|
||||||
using HandyControl.Tools;
|
using HandyControl.Tools;
|
||||||
|
|
||||||
namespace HandyControlDemo.Tools.Converter
|
namespace HandyControlDemo.Tools.Converter;
|
||||||
|
|
||||||
|
public class HatchBrushConverter : IValueConverter
|
||||||
{
|
{
|
||||||
public class HatchBrushConverter : IValueConverter
|
private readonly HatchBrushGenerator _brushGenerator;
|
||||||
|
|
||||||
|
public HatchBrushConverter()
|
||||||
{
|
{
|
||||||
private readonly HatchBrushGenerator _brushGenerator;
|
_brushGenerator = new HatchBrushGenerator();
|
||||||
|
}
|
||||||
|
|
||||||
public HatchBrushConverter()
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
if (value is HatchStyle style)
|
||||||
{
|
{
|
||||||
_brushGenerator = new HatchBrushGenerator();
|
return _brushGenerator.GetHatchBrush(style, ResourceHelper.GetResource<Color>(ResourceToken.DarkPrimaryColor), Colors.Transparent);
|
||||||
}
|
}
|
||||||
|
return Brushes.Transparent;
|
||||||
|
}
|
||||||
|
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
if (value is HatchStyle style)
|
throw new NotSupportedException();
|
||||||
{
|
|
||||||
return _brushGenerator.GetHatchBrush(style, ResourceHelper.GetResource<Color>(ResourceToken.DarkPrimaryColor), Colors.Transparent);
|
|
||||||
}
|
|
||||||
return Brushes.Transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
|
||||||
{
|
|
||||||
throw new NotSupportedException();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,18 +4,17 @@ using System.Windows.Data;
|
|||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using HandyControl.Tools;
|
using HandyControl.Tools;
|
||||||
|
|
||||||
namespace HandyControlDemo.Tools.Converter
|
namespace HandyControlDemo.Tools.Converter;
|
||||||
{
|
|
||||||
public class String2BrushConverter : IValueConverter
|
|
||||||
{
|
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
||||||
{
|
|
||||||
return value is string str ? ResourceHelper.GetResource<Brush>(str) : default;
|
|
||||||
}
|
|
||||||
|
|
||||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
public class String2BrushConverter : IValueConverter
|
||||||
{
|
{
|
||||||
throw new NotSupportedException();
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
}
|
{
|
||||||
|
return value is string str ? ResourceHelper.GetResource<Brush>(str) : default;
|
||||||
|
}
|
||||||
|
|
||||||
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
throw new NotSupportedException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,43 +3,42 @@ using System.Globalization;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Data;
|
using System.Windows.Data;
|
||||||
|
|
||||||
namespace HandyControlDemo.Tools.Converter
|
namespace HandyControlDemo.Tools.Converter;
|
||||||
|
|
||||||
|
public class StringRepeatConverter : IValueConverter
|
||||||
{
|
{
|
||||||
public class StringRepeatConverter : IValueConverter
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
if (value is string strValue)
|
||||||
{
|
{
|
||||||
if (value is string strValue)
|
var builder = new StringBuilder();
|
||||||
|
int num;
|
||||||
|
if (parameter is string numStr)
|
||||||
{
|
{
|
||||||
var builder = new StringBuilder();
|
if (!int.TryParse(numStr, out num))
|
||||||
int num;
|
|
||||||
if (parameter is string numStr)
|
|
||||||
{
|
|
||||||
if (!int.TryParse(numStr, out num))
|
|
||||||
{
|
|
||||||
return strValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (parameter is int intValue)
|
|
||||||
{
|
|
||||||
num = intValue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
return strValue;
|
return strValue;
|
||||||
}
|
}
|
||||||
for (var i = 0; i < num; i++)
|
|
||||||
{
|
|
||||||
builder.Append(strValue);
|
|
||||||
}
|
|
||||||
return builder.ToString();
|
|
||||||
}
|
}
|
||||||
return string.Empty;
|
else if (parameter is int intValue)
|
||||||
|
{
|
||||||
|
num = intValue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return strValue;
|
||||||
|
}
|
||||||
|
for (var i = 0; i < num; i++)
|
||||||
|
{
|
||||||
|
builder.Append(strValue);
|
||||||
|
}
|
||||||
|
return builder.ToString();
|
||||||
}
|
}
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
throw new NotSupportedException();
|
throw new NotSupportedException();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
using HandyControlDemo.Properties.Langs;
|
using HandyControlDemo.Properties.Langs;
|
||||||
|
|
||||||
namespace HandyControlDemo.Tools.Extension
|
namespace HandyControlDemo.Tools.Extension;
|
||||||
|
|
||||||
|
public class LangExtension : HandyControl.Tools.Extension.LangExtension
|
||||||
{
|
{
|
||||||
public class LangExtension : HandyControl.Tools.Extension.LangExtension
|
public LangExtension()
|
||||||
{
|
{
|
||||||
public LangExtension()
|
Source = LangProvider.Instance;
|
||||||
{
|
|
||||||
Source = LangProvider.Instance;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,37 +1,36 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace HandyControlDemo.Tools
|
namespace HandyControlDemo.Tools;
|
||||||
|
|
||||||
|
internal class AssemblyHelper
|
||||||
{
|
{
|
||||||
internal class AssemblyHelper
|
private static readonly string NameSpaceStr = typeof(AssemblyHelper).Assembly.GetName().Name;
|
||||||
|
|
||||||
|
private static readonly Dictionary<string, object> CacheDic = new();
|
||||||
|
|
||||||
|
public static void Register(string name, object instance) => CacheDic[name] = instance;
|
||||||
|
|
||||||
|
public static object ResolveByKey(string key)
|
||||||
{
|
{
|
||||||
private static readonly string NameSpaceStr = typeof(AssemblyHelper).Assembly.GetName().Name;
|
if (CacheDic.TryGetValue(key, out var value))
|
||||||
|
|
||||||
private static readonly Dictionary<string, object> CacheDic = new();
|
|
||||||
|
|
||||||
public static void Register(string name, object instance) => CacheDic[name] = instance;
|
|
||||||
|
|
||||||
public static object ResolveByKey(string key)
|
|
||||||
{
|
{
|
||||||
if (CacheDic.TryGetValue(key, out var value))
|
return value;
|
||||||
{
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static object CreateInternalInstance(string className)
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static object CreateInternalInstance(string className)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
try
|
var type = Type.GetType($"{NameSpaceStr}.{className}");
|
||||||
{
|
return type == null ? null : Activator.CreateInstance(type);
|
||||||
var type = Type.GetType($"{NameSpaceStr}.{className}");
|
}
|
||||||
return type == null ? null : Activator.CreateInstance(type);
|
catch
|
||||||
}
|
{
|
||||||
catch
|
return null;
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
namespace HandyControlDemo.Tools
|
namespace HandyControlDemo.Tools;
|
||||||
|
|
||||||
|
internal class VersionHelper
|
||||||
{
|
{
|
||||||
internal class VersionHelper
|
internal static string GetVersion()
|
||||||
{
|
{
|
||||||
internal static string GetVersion()
|
var versionInfo = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location);
|
||||||
{
|
|
||||||
var versionInfo = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location);
|
|
||||||
#if NET40
|
#if NET40
|
||||||
var netVersion = "NET 40";
|
var netVersion = "NET 40";
|
||||||
#elif NET45
|
#elif NET45
|
||||||
var netVersion = "NET 45";
|
var netVersion = "NET 45";
|
||||||
#elif NET451
|
#elif NET451
|
||||||
@@ -35,14 +35,13 @@ namespace HandyControlDemo.Tools
|
|||||||
#elif NET6_0
|
#elif NET6_0
|
||||||
var netVersion = "NET 60";
|
var netVersion = "NET 60";
|
||||||
#elif NETCOREAPP3_0
|
#elif NETCOREAPP3_0
|
||||||
var netVersion = "CORE 30";
|
var netVersion = "CORE 30";
|
||||||
#elif NETCOREAPP3_1
|
#elif NETCOREAPP3_1
|
||||||
var netVersion = "CORE 31";
|
var netVersion = "CORE 31";
|
||||||
#endif
|
#endif
|
||||||
return $"v {versionInfo.FileVersion} {netVersion}";
|
return $"v {versionInfo.FileVersion} {netVersion}";
|
||||||
}
|
|
||||||
|
|
||||||
internal static string GetCopyright() =>
|
|
||||||
FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).LegalCopyright;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static string GetCopyright() =>
|
||||||
|
FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).LegalCopyright;
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,13 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace HandyControlDemo.Tools
|
namespace HandyControlDemo.Tools;
|
||||||
{
|
|
||||||
internal class Win32Helper
|
|
||||||
{
|
|
||||||
[DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
|
|
||||||
public static extern bool SetForegroundWindow(IntPtr hWnd);
|
|
||||||
|
|
||||||
[DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
|
internal class Win32Helper
|
||||||
public static extern int MciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
|
{
|
||||||
}
|
[DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
|
||||||
|
public static extern bool SetForegroundWindow(IntPtr hWnd);
|
||||||
|
|
||||||
|
[DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
|
||||||
|
public static extern int MciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
|
||||||
}
|
}
|
||||||
@@ -6,75 +6,74 @@ using HandyControl.Data;
|
|||||||
using ICSharpCode.AvalonEdit.Highlighting;
|
using ICSharpCode.AvalonEdit.Highlighting;
|
||||||
using ICSharpCode.AvalonEdit.Highlighting.Xshd;
|
using ICSharpCode.AvalonEdit.Highlighting.Xshd;
|
||||||
|
|
||||||
namespace HandyControlDemo.Tools
|
namespace HandyControlDemo.Tools;
|
||||||
|
|
||||||
|
internal class HighlightingProvider
|
||||||
{
|
{
|
||||||
internal class HighlightingProvider
|
public static HighlightingProvider Default = new Lazy<HighlightingProvider>(() => new HighlightingProvider()).Value;
|
||||||
|
|
||||||
|
protected static readonly Lazy<IHighlightingDefinition> DefaultDefinition = new(() => HighlightingManager.Instance.GetDefinition("C#"));
|
||||||
|
|
||||||
|
private static readonly Dictionary<SkinType, HighlightingProvider> Providers = new();
|
||||||
|
|
||||||
|
protected Dictionary<string, Lazy<IHighlightingDefinition>> Definition;
|
||||||
|
|
||||||
|
public static void Register(SkinType skinType, HighlightingProvider provider)
|
||||||
{
|
{
|
||||||
public static HighlightingProvider Default = new Lazy<HighlightingProvider>(() => new HighlightingProvider()).Value;
|
Providers[skinType] = provider ?? throw new ArgumentNullException(nameof(provider));
|
||||||
|
provider.InitDefinitions();
|
||||||
protected static readonly Lazy<IHighlightingDefinition> DefaultDefinition = new(() => HighlightingManager.Instance.GetDefinition("C#"));
|
|
||||||
|
|
||||||
private static readonly Dictionary<SkinType, HighlightingProvider> Providers = new();
|
|
||||||
|
|
||||||
protected Dictionary<string, Lazy<IHighlightingDefinition>> Definition;
|
|
||||||
|
|
||||||
public static void Register(SkinType skinType, HighlightingProvider provider)
|
|
||||||
{
|
|
||||||
Providers[skinType] = provider ?? throw new ArgumentNullException(nameof(provider));
|
|
||||||
provider.InitDefinitions();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IHighlightingDefinition GetDefinition(SkinType skinType, string name)
|
|
||||||
{
|
|
||||||
if (Providers.TryGetValue(skinType, out var provider))
|
|
||||||
{
|
|
||||||
return provider.GetDefinition(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
return DefaultDefinition.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static IHighlightingDefinition LoadDefinition(string xshdName)
|
|
||||||
{
|
|
||||||
var streamResourceInfo = Application.GetResourceStream(new Uri($"pack://application:,,,/Resources/xshd/{xshdName}.xshd"));
|
|
||||||
if (streamResourceInfo == null)
|
|
||||||
{
|
|
||||||
return DefaultDefinition.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
using var reader = new XmlTextReader(streamResourceInfo.Stream);
|
|
||||||
return HighlightingLoader.Load(reader, HighlightingManager.Instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual IHighlightingDefinition GetDefinition(string name)
|
|
||||||
{
|
|
||||||
if (Definition.TryGetValue(name, out var definition))
|
|
||||||
{
|
|
||||||
return definition.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
return DefaultDefinition.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void InitDefinitions()
|
|
||||||
{
|
|
||||||
Definition = new Dictionary<string, Lazy<IHighlightingDefinition>>
|
|
||||||
{
|
|
||||||
["XML"] = new(() => HighlightingManager.Instance.GetDefinition("XML")),
|
|
||||||
["C#"] = new(() => DefaultDefinition.Value)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class HighlightingProviderDark : HighlightingProvider
|
public static IHighlightingDefinition GetDefinition(SkinType skinType, string name)
|
||||||
{
|
{
|
||||||
protected override void InitDefinitions()
|
if (Providers.TryGetValue(skinType, out var provider))
|
||||||
{
|
{
|
||||||
Definition = new Dictionary<string, Lazy<IHighlightingDefinition>>
|
return provider.GetDefinition(name);
|
||||||
{
|
|
||||||
["XML"] = new(() => LoadDefinition("XML-Dark")),
|
|
||||||
["C#"] = new(() => LoadDefinition("CSharp-Dark")),
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return DefaultDefinition.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static IHighlightingDefinition LoadDefinition(string xshdName)
|
||||||
|
{
|
||||||
|
var streamResourceInfo = Application.GetResourceStream(new Uri($"pack://application:,,,/Resources/xshd/{xshdName}.xshd"));
|
||||||
|
if (streamResourceInfo == null)
|
||||||
|
{
|
||||||
|
return DefaultDefinition.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
using var reader = new XmlTextReader(streamResourceInfo.Stream);
|
||||||
|
return HighlightingLoader.Load(reader, HighlightingManager.Instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual IHighlightingDefinition GetDefinition(string name)
|
||||||
|
{
|
||||||
|
if (Definition.TryGetValue(name, out var definition))
|
||||||
|
{
|
||||||
|
return definition.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DefaultDefinition.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void InitDefinitions()
|
||||||
|
{
|
||||||
|
Definition = new Dictionary<string, Lazy<IHighlightingDefinition>>
|
||||||
|
{
|
||||||
|
["XML"] = new(() => HighlightingManager.Instance.GetDefinition("XML")),
|
||||||
|
["C#"] = new(() => DefaultDefinition.Value)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class HighlightingProviderDark : HighlightingProvider
|
||||||
|
{
|
||||||
|
protected override void InitDefinitions()
|
||||||
|
{
|
||||||
|
Definition = new Dictionary<string, Lazy<IHighlightingDefinition>>
|
||||||
|
{
|
||||||
|
["XML"] = new(() => LoadDefinition("XML-Dark")),
|
||||||
|
["C#"] = new(() => LoadDefinition("CSharp-Dark")),
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
using System.Globalization;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
|
||||||
|
namespace HandyControlDemo.Tools;
|
||||||
|
|
||||||
|
public class NumericUpDownDemoRule : ValidationRule
|
||||||
|
{
|
||||||
|
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
|
||||||
|
{
|
||||||
|
if (value is not double doubleValue)
|
||||||
|
{
|
||||||
|
return new ValidationResult(false, HandyControl.Properties.Langs.Lang.FormatError);
|
||||||
|
}
|
||||||
|
|
||||||
|
return doubleValue % 2 > double.Epsilon
|
||||||
|
? new ValidationResult(false, Properties.Langs.Lang.Error)
|
||||||
|
: ValidationResult.ValidResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,40 +1,39 @@
|
|||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class Avatar
|
||||||
{
|
{
|
||||||
public partial class Avatar
|
public Avatar()
|
||||||
{
|
{
|
||||||
public Avatar()
|
InitializeComponent();
|
||||||
{
|
}
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static readonly DependencyProperty SourceProperty = DependencyProperty.Register(
|
public static readonly DependencyProperty SourceProperty = DependencyProperty.Register(
|
||||||
"Source", typeof(BitmapFrame), typeof(Avatar), new PropertyMetadata(default(BitmapFrame)));
|
"Source", typeof(BitmapFrame), typeof(Avatar), new PropertyMetadata(default(BitmapFrame)));
|
||||||
|
|
||||||
public BitmapFrame Source
|
public BitmapFrame Source
|
||||||
{
|
{
|
||||||
get => (BitmapFrame) GetValue(SourceProperty);
|
get => (BitmapFrame) GetValue(SourceProperty);
|
||||||
set => SetValue(SourceProperty, value);
|
set => SetValue(SourceProperty, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static readonly DependencyProperty UserNameProperty = DependencyProperty.Register(
|
public static readonly DependencyProperty UserNameProperty = DependencyProperty.Register(
|
||||||
"DisplayName", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
"DisplayName", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||||
|
|
||||||
public string DisplayName
|
public string DisplayName
|
||||||
{
|
{
|
||||||
get => (string) GetValue(UserNameProperty);
|
get => (string) GetValue(UserNameProperty);
|
||||||
set => SetValue(UserNameProperty, value);
|
set => SetValue(UserNameProperty, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static readonly DependencyProperty LinkProperty = DependencyProperty.Register(
|
public static readonly DependencyProperty LinkProperty = DependencyProperty.Register(
|
||||||
"Link", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
"Link", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||||
|
|
||||||
public string Link
|
public string Link
|
||||||
{
|
{
|
||||||
get => (string) GetValue(LinkProperty);
|
get => (string) GetValue(LinkProperty);
|
||||||
set => SetValue(LinkProperty, value);
|
set => SetValue(LinkProperty, value);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,22 +1,21 @@
|
|||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using HandyControl.Tools;
|
using HandyControl.Tools;
|
||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class ChatBox
|
||||||
{
|
{
|
||||||
public partial class ChatBox
|
private ScrollViewer _scrollViewer;
|
||||||
|
|
||||||
|
public ChatBox()
|
||||||
{
|
{
|
||||||
private ScrollViewer _scrollViewer;
|
InitializeComponent();
|
||||||
|
ListBoxChat.ItemContainerGenerator.ItemsChanged += ItemContainerGenerator_ItemsChanged;
|
||||||
|
}
|
||||||
|
|
||||||
public ChatBox()
|
private void ItemContainerGenerator_ItemsChanged(object sender, System.Windows.Controls.Primitives.ItemsChangedEventArgs e)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
_scrollViewer ??= VisualHelper.GetChild<ScrollViewer>(ListBoxChat);
|
||||||
ListBoxChat.ItemContainerGenerator.ItemsChanged += ItemContainerGenerator_ItemsChanged;
|
_scrollViewer?.ScrollToBottom();
|
||||||
}
|
|
||||||
|
|
||||||
private void ItemContainerGenerator_ItemsChanged(object sender, System.Windows.Controls.Primitives.ItemsChangedEventArgs e)
|
|
||||||
{
|
|
||||||
_scrollViewer ??= VisualHelper.GetChild<ScrollViewer>(ListBoxChat);
|
|
||||||
_scrollViewer?.ScrollToBottom();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,19 +1,18 @@
|
|||||||
using System.Windows;
|
using System.Windows;
|
||||||
using HandyControlDemo.Data;
|
using HandyControlDemo.Data;
|
||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class GeometryItem
|
||||||
{
|
{
|
||||||
public partial class GeometryItem
|
public GeometryItem() => InitializeComponent();
|
||||||
|
|
||||||
|
public static readonly DependencyProperty InfoProperty = DependencyProperty.Register(
|
||||||
|
"Info", typeof(GeometryItemModel), typeof(GeometryItem), new PropertyMetadata(default(GeometryItemModel)));
|
||||||
|
|
||||||
|
public GeometryItemModel Info
|
||||||
{
|
{
|
||||||
public GeometryItem() => InitializeComponent();
|
get => (GeometryItemModel) GetValue(InfoProperty);
|
||||||
|
set => SetValue(InfoProperty, value);
|
||||||
public static readonly DependencyProperty InfoProperty = DependencyProperty.Register(
|
|
||||||
"Info", typeof(GeometryItemModel), typeof(GeometryItem), new PropertyMetadata(default(GeometryItemModel)));
|
|
||||||
|
|
||||||
public GeometryItemModel Info
|
|
||||||
{
|
|
||||||
get => (GeometryItemModel) GetValue(InfoProperty);
|
|
||||||
set => SetValue(InfoProperty, value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
internal interface IFull
|
||||||
{
|
{
|
||||||
internal interface IFull
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class InteractiveDialog
|
||||||
{
|
{
|
||||||
public partial class InteractiveDialog
|
public InteractiveDialog()
|
||||||
{
|
{
|
||||||
public InteractiveDialog()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class TextDialog
|
||||||
{
|
{
|
||||||
public partial class TextDialog
|
public TextDialog()
|
||||||
{
|
{
|
||||||
public TextDialog()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,23 +2,22 @@
|
|||||||
using System.Windows.Controls.Primitives;
|
using System.Windows.Controls.Primitives;
|
||||||
using HandyControl.Tools;
|
using HandyControl.Tools;
|
||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class TextDialogWithTimer
|
||||||
{
|
{
|
||||||
public partial class TextDialogWithTimer
|
public TextDialogWithTimer()
|
||||||
{
|
{
|
||||||
public TextDialogWithTimer()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
var animation = AnimationHelper.CreateAnimation(100, 5000);
|
var animation = AnimationHelper.CreateAnimation(100, 5000);
|
||||||
animation.EasingFunction = null;
|
animation.EasingFunction = null;
|
||||||
animation.Completed += Animation_Completed;
|
animation.Completed += Animation_Completed;
|
||||||
ProgressBarTimer.BeginAnimation(RangeBase.ValueProperty, animation);
|
ProgressBarTimer.BeginAnimation(RangeBase.ValueProperty, animation);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Animation_Completed(object sender, EventArgs e)
|
private void Animation_Completed(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ButtonClose.Command.Execute(null);
|
ButtonClose.Command.Execute(null);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+5
-6
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class AnimationPathDemoCtl
|
||||||
{
|
{
|
||||||
public partial class AnimationPathDemoCtl
|
public AnimationPathDemoCtl()
|
||||||
{
|
{
|
||||||
public AnimationPathDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+5
-6
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class AutoCompleteTextBoxDemoCtl
|
||||||
{
|
{
|
||||||
public partial class AutoCompleteTextBoxDemoCtl
|
public AutoCompleteTextBoxDemoCtl()
|
||||||
{
|
{
|
||||||
public AutoCompleteTextBoxDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,25 +7,25 @@
|
|||||||
Background="{DynamicResource RegionBrush}"
|
Background="{DynamicResource RegionBrush}"
|
||||||
DataContext="{Binding BadgeDemo, Source={StaticResource Locator}}">
|
DataContext="{Binding BadgeDemo, Source={StaticResource Locator}}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<StackPanel Margin="32" Orientation="Horizontal">
|
<hc:UniformSpacingPanel Margin="32" Spacing="32" ChildWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center">
|
||||||
<hc:Badge Text="New" BadgeMargin="0,-14,-20,0" Height="30">
|
<hc:Badge Text="New" BadgeMargin="0,-14,-20,0" Height="30">
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Comment}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Comment}}"/>
|
||||||
</hc:Badge>
|
</hc:Badge>
|
||||||
<hc:Badge Text="New" BadgeMargin="0,-14,-20,0" Height="30" Margin="32,0,0,0" Style="{StaticResource BadgeDanger}">
|
<hc:Badge Text="New" BadgeMargin="0,-14,-20,0" Height="30" Style="{StaticResource BadgeDanger}">
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Comment}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Comment}}"/>
|
||||||
</hc:Badge>
|
</hc:Badge>
|
||||||
<hc:Badge Value="{Binding Count}" BadgeMargin="0,-14,-10,0" Height="30" Margin="32,0,0,0" Style="{StaticResource BadgePrimary}">
|
<hc:Badge Value="{Binding Count}" BadgeMargin="0,-14,-10,0" Height="30" Style="{StaticResource BadgePrimary}">
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Click2Count}}" Command="{Binding CountCmd}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Click2Count}}" Command="{Binding CountCmd}"/>
|
||||||
</hc:Badge>
|
</hc:Badge>
|
||||||
<hc:Badge Value="100" BadgeMargin="0,-14,-20,0" Height="30" Margin="32,0,0,0" Style="{StaticResource BadgeDanger}">
|
<hc:Badge Value="100" BadgeMargin="0,-14,-20,0" Height="30" Style="{StaticResource BadgeDanger}">
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Comment}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Comment}}"/>
|
||||||
</hc:Badge>
|
</hc:Badge>
|
||||||
<hc:Badge Status="Dot" Height="30" Margin="32,0,0,0" Style="{StaticResource BadgeDanger}">
|
<hc:Badge Status="Dot" Height="30" Style="{StaticResource BadgeDanger}">
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Reply}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Reply}}"/>
|
||||||
</hc:Badge>
|
</hc:Badge>
|
||||||
<hc:Badge Status="Processing" Height="30" Margin="32,0,0,0" Style="{StaticResource BadgeDanger}">
|
<hc:Badge Status="Processing" Height="30" Style="{StaticResource BadgeDanger}">
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Reply}}" />
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Reply}}" />
|
||||||
</hc:Badge>
|
</hc:Badge>
|
||||||
</StackPanel>
|
</hc:UniformSpacingPanel>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class BadgeDemoCtl
|
||||||
{
|
{
|
||||||
public partial class BadgeDemoCtl
|
public BadgeDemoCtl()
|
||||||
{
|
{
|
||||||
public BadgeDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,67 +6,69 @@
|
|||||||
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
||||||
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension">
|
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<WrapPanel Margin="16" VerticalAlignment="Center">
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<StackPanel Margin="16">
|
<hc:UniformSpacingPanel Margin="32" Spacing="32" ChildWrapping="Wrap" VerticalAlignment="Center">
|
||||||
<hc:ButtonGroup>
|
<hc:UniformSpacingPanel Spacing="32" Orientation="Vertical">
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
<hc:ButtonGroup>
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||||
</hc:ButtonGroup>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||||
<hc:ButtonGroup Margin="0,32,0,0">
|
</hc:ButtonGroup>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<hc:ButtonGroup>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
</hc:ButtonGroup>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<hc:ButtonGroup Margin="0,32,0,0" Style="{StaticResource ButtonGroupSolid}">
|
</hc:ButtonGroup>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<hc:ButtonGroup Style="{StaticResource ButtonGroupSolid}">
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}" IsChecked="True"/>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}" IsChecked="True"/>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
</hc:ButtonGroup>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
<hc:ButtonGroup Margin="0,32,0,0">
|
</hc:ButtonGroup>
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
<hc:ButtonGroup>
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}" IsChecked="True"/>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
</hc:ButtonGroup>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}" IsChecked="True"/>
|
||||||
</StackPanel>
|
</hc:ButtonGroup>
|
||||||
<StackPanel Margin="16" Orientation="Horizontal">
|
</hc:UniformSpacingPanel>
|
||||||
<hc:ButtonGroup Orientation="Vertical">
|
<hc:UniformSpacingPanel Spacing="32" ChildWrapping="Wrap">
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
<hc:ButtonGroup Orientation="Vertical">
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||||
</hc:ButtonGroup>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||||
<hc:ButtonGroup Margin="32,0,0,0" Orientation="Vertical">
|
</hc:ButtonGroup>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<hc:ButtonGroup Orientation="Vertical">
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
</hc:ButtonGroup>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<hc:ButtonGroup Margin="32,0,0,0" Style="{StaticResource ButtonGroupSolid}" Orientation="Vertical">
|
</hc:ButtonGroup>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<hc:ButtonGroup Style="{StaticResource ButtonGroupSolid}" Orientation="Vertical">
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}" IsChecked="True"/>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}" IsChecked="True"/>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
</hc:ButtonGroup>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
<hc:ButtonGroup Margin="32,0,0,0" Orientation="Vertical">
|
</hc:ButtonGroup>
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
<hc:ButtonGroup Orientation="Vertical">
|
||||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}" IsChecked="True"/>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
</hc:ButtonGroup>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}" IsChecked="True"/>
|
||||||
</StackPanel>
|
</hc:ButtonGroup>
|
||||||
</WrapPanel>
|
</hc:UniformSpacingPanel>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
</hc:ScrollViewer>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
+26
-27
@@ -1,40 +1,39 @@
|
|||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class ButtonGroupDemoCtl
|
||||||
{
|
{
|
||||||
public partial class ButtonGroupDemoCtl
|
public ButtonGroupDemoCtl()
|
||||||
{
|
{
|
||||||
public ButtonGroupDemoCtl()
|
InitializeComponent();
|
||||||
{
|
}
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static readonly DependencyProperty SourceProperty = DependencyProperty.Register(
|
public static readonly DependencyProperty SourceProperty = DependencyProperty.Register(
|
||||||
"Source", typeof(BitmapFrame), typeof(Avatar), new PropertyMetadata(default(BitmapFrame)));
|
"Source", typeof(BitmapFrame), typeof(Avatar), new PropertyMetadata(default(BitmapFrame)));
|
||||||
|
|
||||||
public BitmapFrame Source
|
public BitmapFrame Source
|
||||||
{
|
{
|
||||||
get => (BitmapFrame) GetValue(SourceProperty);
|
get => (BitmapFrame) GetValue(SourceProperty);
|
||||||
set => SetValue(SourceProperty, value);
|
set => SetValue(SourceProperty, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static readonly DependencyProperty UserNameProperty = DependencyProperty.Register(
|
public static readonly DependencyProperty UserNameProperty = DependencyProperty.Register(
|
||||||
"DisplayName", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
"DisplayName", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||||
|
|
||||||
public string DisplayName
|
public string DisplayName
|
||||||
{
|
{
|
||||||
get => (string) GetValue(UserNameProperty);
|
get => (string) GetValue(UserNameProperty);
|
||||||
set => SetValue(UserNameProperty, value);
|
set => SetValue(UserNameProperty, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static readonly DependencyProperty LinkProperty = DependencyProperty.Register(
|
public static readonly DependencyProperty LinkProperty = DependencyProperty.Register(
|
||||||
"Link", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
"Link", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||||
|
|
||||||
public string Link
|
public string Link
|
||||||
{
|
{
|
||||||
get => (string) GetValue(LinkProperty);
|
get => (string) GetValue(LinkProperty);
|
||||||
set => SetValue(LinkProperty, value);
|
set => SetValue(LinkProperty, value);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+5
-6
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class CalendarWithClockDemoCtl
|
||||||
{
|
{
|
||||||
public partial class CalendarWithClockDemoCtl
|
public CalendarWithClockDemoCtl()
|
||||||
{
|
{
|
||||||
public CalendarWithClockDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||||
xmlns:data="clr-namespace:HandyControlDemo.Data">
|
xmlns:data="clr-namespace:HandyControlDemo.Data">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<ListBox Margin="32" BorderThickness="0" Style="{StaticResource WrapPanelHorizontalListBox}" ItemsPanel="{StaticResource FluidMoveBehaviorWrapPanelItemsPanelTemplate}" ItemsSource="{Binding DataList}">
|
<ListBox Margin="32" hc:ScrollViewer.IsInertiaEnabled="True" BorderThickness="0" Style="{StaticResource WrapPanelHorizontalListBox}" ItemsPanel="{StaticResource FluidMoveBehaviorWrapPanelItemsPanelTemplate}" ItemsSource="{Binding DataList}">
|
||||||
<ListBox.ItemTemplate>
|
<ListBox.ItemTemplate>
|
||||||
<DataTemplate DataType="data:CardModel">
|
<DataTemplate DataType="data:CardModel">
|
||||||
<hc:Card MaxWidth="240" BorderThickness="0" Effect="{StaticResource EffectShadow2}" Margin="8" Footer="{Binding Footer}">
|
<hc:Card MaxWidth="240" BorderThickness="0" Effect="{StaticResource EffectShadow2}" Margin="8" Footer="{Binding Footer}">
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class CardDemoCtl
|
||||||
{
|
{
|
||||||
public partial class CardDemoCtl
|
public CardDemoCtl()
|
||||||
{
|
{
|
||||||
public CardDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
Background="{DynamicResource RegionBrush}"
|
Background="{DynamicResource RegionBrush}"
|
||||||
xmlns:hc="https://handyorg.github.io/handycontrol">
|
xmlns:hc="https://handyorg.github.io/handycontrol">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<hc:Carousel Margin="32" IsCenter="True" AutoRun="True" Width="600" Height="330" VerticalAlignment="Center">
|
<hc:Carousel Margin="32" IsCenter="True" AutoRun="True" MaxWidth="600" Height="330" VerticalAlignment="Center">
|
||||||
<Image Width="600" Stretch="UniformToFill" Source="/HandyControlDemo;component/Resources/Img/1.jpg"/>
|
<Image Width="600" Stretch="UniformToFill" Source="/HandyControlDemo;component/Resources/Img/1.jpg"/>
|
||||||
<Image Width="300" Stretch="UniformToFill" Source="/HandyControlDemo;component/Resources/Img/2.jpg"/>
|
<Image Width="300" Stretch="UniformToFill" Source="/HandyControlDemo;component/Resources/Img/2.jpg"/>
|
||||||
<hc:SimplePanel Width="600">
|
<hc:SimplePanel Width="600">
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class CarouselDemoCtl
|
||||||
{
|
{
|
||||||
public partial class CarouselDemoCtl
|
public CarouselDemoCtl()
|
||||||
{
|
{
|
||||||
public CarouselDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,17 +5,19 @@
|
|||||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<StackPanel Orientation="Horizontal" Margin="32">
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<userControl:ChatBox>
|
<hc:UniformSpacingPanel Spacing="32" ChildWrapping="Wrap" Margin="32">
|
||||||
<userControl:ChatBox.Background>
|
<userControl:ChatBox>
|
||||||
<ImageBrush ImageSource="/HandyControlDemo;component/Resources/Img/Chat/chat_back1.jpg" Stretch="Uniform"/>
|
<userControl:ChatBox.Background>
|
||||||
</userControl:ChatBox.Background>
|
<ImageBrush ImageSource="/HandyControlDemo;component/Resources/Img/Chat/chat_back1.jpg" Stretch="Uniform"/>
|
||||||
</userControl:ChatBox>
|
</userControl:ChatBox.Background>
|
||||||
<userControl:ChatBox Margin="32,0,0,0">
|
</userControl:ChatBox>
|
||||||
<userControl:ChatBox.Background>
|
<userControl:ChatBox>
|
||||||
<ImageBrush ImageSource="/HandyControlDemo;component/Resources/Img/Chat/chat_back2.jpg" Stretch="Uniform"/>
|
<userControl:ChatBox.Background>
|
||||||
</userControl:ChatBox.Background>
|
<ImageBrush ImageSource="/HandyControlDemo;component/Resources/Img/Chat/chat_back2.jpg" Stretch="Uniform"/>
|
||||||
</userControl:ChatBox>
|
</userControl:ChatBox.Background>
|
||||||
</StackPanel>
|
</userControl:ChatBox>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
</hc:ScrollViewer>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class ChatBubbleDemoCtl
|
||||||
{
|
{
|
||||||
public partial class ChatBubbleDemoCtl
|
public ChatBubbleDemoCtl()
|
||||||
{
|
{
|
||||||
public ChatBubbleDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
<UserControl x:Class="HandyControlDemo.UserControl.CheckComboBoxDemoCtl"
|
<UserControl x:Class="HandyControlDemo.UserControl.CheckComboBoxDemoCtl"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
DataContext="{Binding ComboBoxDemo,Source={StaticResource Locator}}"
|
DataContext="{Binding InputElementDemo,Source={StaticResource Locator}}"
|
||||||
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
||||||
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
||||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<ScrollViewer>
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
|
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<hc:CheckComboBox ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" ShowSelectAllButton="True"/>
|
<hc:CheckComboBox ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" ShowSelectAllButton="True"/>
|
||||||
@@ -50,6 +50,6 @@
|
|||||||
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource CheckComboBoxPlus.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource CheckComboBoxPlus.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</hc:UniformSpacingPanel>
|
</hc:UniformSpacingPanel>
|
||||||
</ScrollViewer>
|
</hc:ScrollViewer>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
+5
-6
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class CheckComboBoxDemoCtl
|
||||||
{
|
{
|
||||||
public partial class CheckComboBoxDemoCtl
|
public CheckComboBoxDemoCtl()
|
||||||
{
|
{
|
||||||
public CheckComboBoxDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class CirclePanelDemoCtl
|
||||||
{
|
{
|
||||||
public partial class CirclePanelDemoCtl
|
public CirclePanelDemoCtl()
|
||||||
{
|
{
|
||||||
public CirclePanelDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,9 +4,11 @@
|
|||||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<StackPanel Orientation="Horizontal" Margin="32">
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<hc:Clock/>
|
<hc:UniformSpacingPanel Spacing="16" ChildWrapping="Wrap" Margin="32">
|
||||||
<hc:ListClock Margin="16,0,0,0"/>
|
<hc:Clock/>
|
||||||
</StackPanel>
|
<hc:ListClock/>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
</hc:ScrollViewer>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class ClockDemoCtl
|
||||||
{
|
{
|
||||||
public partial class ClockDemoCtl
|
public ClockDemoCtl()
|
||||||
{
|
{
|
||||||
public ClockDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class ColorPickerDemoCtl
|
||||||
{
|
{
|
||||||
public partial class ColorPickerDemoCtl
|
public ColorPickerDemoCtl()
|
||||||
{
|
{
|
||||||
public ColorPickerDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
<UserControl x:Class="HandyControlDemo.UserControl.ComboBoxDemoCtl"
|
<UserControl x:Class="HandyControlDemo.UserControl.ComboBoxDemoCtl"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
DataContext="{Binding ComboBoxDemo,Source={StaticResource Locator}}"
|
DataContext="{Binding InputElementDemo,Source={StaticResource Locator}}"
|
||||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||||
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
||||||
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<ScrollViewer>
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
|
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<hc:ComboBox ShowClearButton="True" ItemsSource="{Binding DataList}" SelectedIndex="0"/>
|
<hc:ComboBox ShowClearButton="True" ItemsSource="{Binding DataList}" SelectedIndex="0"/>
|
||||||
@@ -40,6 +40,6 @@
|
|||||||
<hc:ComboBox AutoComplete="True" ShowClearButton="True" ItemsSource="{Binding DataList}" IsEditable="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,32,0,0" Style="{StaticResource ComboBoxPlus.Small}"/>
|
<hc:ComboBox AutoComplete="True" ShowClearButton="True" ItemsSource="{Binding DataList}" IsEditable="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,32,0,0" Style="{StaticResource ComboBoxPlus.Small}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</hc:UniformSpacingPanel>
|
</hc:UniformSpacingPanel>
|
||||||
</ScrollViewer>
|
</hc:ScrollViewer>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class ComboBoxDemoCtl
|
||||||
{
|
{
|
||||||
public partial class ComboBoxDemoCtl
|
public ComboBoxDemoCtl()
|
||||||
{
|
{
|
||||||
public ComboBoxDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<hc:ScrollViewer VerticalAlignment="Center">
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<WrapPanel ItemHeight="384" ItemWidth="632">
|
<WrapPanel ItemHeight="384" ItemWidth="632">
|
||||||
<hc:CompareSlider Value="5" Width="600" Height="352">
|
<hc:CompareSlider Value="5" Width="600" Height="352">
|
||||||
<hc:CompareSlider.TargetContent>
|
<hc:CompareSlider.TargetContent>
|
||||||
|
|||||||
+5
-6
@@ -1,11 +1,10 @@
|
|||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class CompareSliderDemoCtl
|
||||||
{
|
{
|
||||||
public partial class CompareSliderDemoCtl
|
public CompareSliderDemoCtl()
|
||||||
{
|
{
|
||||||
public CompareSliderDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,8 @@
|
|||||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<hc:CoverFlow x:Name="CoverFlowMain" Margin="32" Width="500" Height="300"/>
|
<Viewbox MaxWidth="500">
|
||||||
|
<hc:CoverFlow x:Name="CoverFlowMain" Margin="32" Width="500" Height="300"/>
|
||||||
|
</Viewbox>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,28 +1,27 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class CoverFlowDemoCtl
|
||||||
{
|
{
|
||||||
public partial class CoverFlowDemoCtl
|
public CoverFlowDemoCtl()
|
||||||
{
|
{
|
||||||
public CoverFlowDemoCtl()
|
InitializeComponent();
|
||||||
|
|
||||||
|
CoverFlowMain.AddRange(new[]
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
new Uri(@"pack://application:,,,/Resources/Img/Album/1.jpg"),
|
||||||
|
new Uri(@"pack://application:,,,/Resources/Img/Album/2.jpg"),
|
||||||
|
new Uri(@"pack://application:,,,/Resources/Img/Album/3.jpg"),
|
||||||
|
new Uri(@"pack://application:,,,/Resources/Img/Album/4.jpg"),
|
||||||
|
new Uri(@"pack://application:,,,/Resources/Img/Album/5.jpg"),
|
||||||
|
new Uri(@"pack://application:,,,/Resources/Img/Album/6.jpg"),
|
||||||
|
new Uri(@"pack://application:,,,/Resources/Img/Album/7.jpg"),
|
||||||
|
new Uri(@"pack://application:,,,/Resources/Img/Album/8.jpg"),
|
||||||
|
new Uri(@"pack://application:,,,/Resources/Img/Album/9.jpg"),
|
||||||
|
new Uri(@"pack://application:,,,/Resources/Img/Album/10.jpg")
|
||||||
|
});
|
||||||
|
|
||||||
CoverFlowMain.AddRange(new[]
|
CoverFlowMain.PageIndex = 2;
|
||||||
{
|
|
||||||
new Uri(@"pack://application:,,,/Resources/Img/Album/1.jpg"),
|
|
||||||
new Uri(@"pack://application:,,,/Resources/Img/Album/2.jpg"),
|
|
||||||
new Uri(@"pack://application:,,,/Resources/Img/Album/3.jpg"),
|
|
||||||
new Uri(@"pack://application:,,,/Resources/Img/Album/4.jpg"),
|
|
||||||
new Uri(@"pack://application:,,,/Resources/Img/Album/5.jpg"),
|
|
||||||
new Uri(@"pack://application:,,,/Resources/Img/Album/6.jpg"),
|
|
||||||
new Uri(@"pack://application:,,,/Resources/Img/Album/7.jpg"),
|
|
||||||
new Uri(@"pack://application:,,,/Resources/Img/Album/8.jpg"),
|
|
||||||
new Uri(@"pack://application:,,,/Resources/Img/Album/9.jpg"),
|
|
||||||
new Uri(@"pack://application:,,,/Resources/Img/Album/10.jpg")
|
|
||||||
});
|
|
||||||
|
|
||||||
CoverFlowMain.PageIndex = 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,19 +7,21 @@
|
|||||||
DataContext="{Binding CoverView,Source={StaticResource Locator}}"
|
DataContext="{Binding CoverView,Source={StaticResource Locator}}"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<hc:CoverView Margin="27" Width="880" Height="432" ItemWidth="160" ItemHeight="160" ItemsSource="{Binding DataList}">
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<hc:CoverView.ItemHeaderTemplate>
|
<hc:CoverView Margin="27" MaxWidth="880" ItemWidth="160" ItemHeight="160" ItemsSource="{Binding DataList}">
|
||||||
<DataTemplate>
|
<hc:CoverView.ItemHeaderTemplate>
|
||||||
<Image Source="{Binding ImgPath}"/>
|
<DataTemplate>
|
||||||
</DataTemplate>
|
<Image Source="{Binding ImgPath}"/>
|
||||||
</hc:CoverView.ItemHeaderTemplate>
|
</DataTemplate>
|
||||||
<hc:CoverView.ItemTemplate>
|
</hc:CoverView.ItemHeaderTemplate>
|
||||||
<DataTemplate>
|
<hc:CoverView.ItemTemplate>
|
||||||
<Border Margin="10" Height="300" Background="{Binding BackgroundToken,Converter={StaticResource String2BrushConverter}}">
|
<DataTemplate>
|
||||||
<TextBlock Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White"/>
|
<Border Margin="10" Height="300" Background="{Binding BackgroundToken,Converter={StaticResource String2BrushConverter}}">
|
||||||
</Border>
|
<TextBlock Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White"/>
|
||||||
</DataTemplate>
|
</Border>
|
||||||
</hc:CoverView.ItemTemplate>
|
</DataTemplate>
|
||||||
</hc:CoverView>
|
</hc:CoverView.ItemTemplate>
|
||||||
|
</hc:CoverView>
|
||||||
|
</hc:ScrollViewer>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class CoverViewDemoCtl
|
||||||
{
|
{
|
||||||
public partial class CoverViewDemoCtl
|
public CoverViewDemoCtl()
|
||||||
{
|
{
|
||||||
public CoverViewDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,16 +7,29 @@
|
|||||||
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<StackPanel Margin="32">
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}"/>
|
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
|
||||||
<hc:DatePicker Margin="0,16,0,0" IsEnabled="False" SelectedDate="{x:Static system:DateTime.Now}"/>
|
<StackPanel>
|
||||||
|
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}"/>
|
||||||
|
<hc:DatePicker Margin="0,16,0,0" IsEnabled="False" SelectedDate="{x:Static system:DateTime.Now}"/>
|
||||||
|
|
||||||
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
|
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
|
||||||
<hc:DatePicker SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
<hc:DatePicker SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
||||||
|
|
||||||
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
|
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
|
||||||
<hc:DatePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
<hc:DatePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel>
|
||||||
|
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" Style="{StaticResource DatePickerPlus.Small}"/>
|
||||||
|
<hc:DatePicker Margin="0,16,0,0" IsEnabled="False" SelectedDate="{x:Static system:DateTime.Now}" Style="{StaticResource DatePickerPlus.Small}"/>
|
||||||
|
|
||||||
</StackPanel>
|
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" Style="{StaticResource DatePickerPlus.Small}"/>
|
||||||
|
<hc:DatePicker SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,16,0,0" Style="{StaticResource DatePickerPlus.Small}"/>
|
||||||
|
|
||||||
|
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" Style="{StaticResource DatePickerPlus.Small}"/>
|
||||||
|
<hc:DatePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,16,0,0" Style="{StaticResource DatePickerPlus.Small}"/>
|
||||||
|
</StackPanel>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
</hc:ScrollViewer>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class DatePickerDemoCtl
|
||||||
{
|
{
|
||||||
public partial class DatePickerDemoCtl
|
public DatePickerDemoCtl()
|
||||||
{
|
{
|
||||||
public DatePickerDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+40
-18
@@ -6,27 +6,49 @@
|
|||||||
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<StackPanel Margin="32" Orientation="Horizontal">
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<StackPanel>
|
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
|
||||||
<hc:DateTimePicker ShowClearButton="True"/>
|
<StackPanel>
|
||||||
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False"/>
|
<hc:DateTimePicker ShowClearButton="True"/>
|
||||||
|
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False"/>
|
||||||
|
|
||||||
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
|
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
|
||||||
<hc:DateTimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
<hc:DateTimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
||||||
|
|
||||||
<hc:DateTimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
|
<hc:DateTimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
|
||||||
<hc:DateTimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
<hc:DateTimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Margin="32,0,0,0">
|
<StackPanel>
|
||||||
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerPlus}"/>
|
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerPlus}"/>
|
||||||
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False" Style="{StaticResource DateTimePickerPlus}"/>
|
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False" Style="{StaticResource DateTimePickerPlus}"/>
|
||||||
|
|
||||||
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
|
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
|
||||||
<hc:DateTimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
<hc:DateTimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
||||||
|
|
||||||
<hc:DateTimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
|
<hc:DateTimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
|
||||||
<hc:DateTimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
<hc:DateTimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</StackPanel>
|
<StackPanel>
|
||||||
|
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePicker.Small}"/>
|
||||||
|
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False" Style="{StaticResource DateTimePicker.Small}"/>
|
||||||
|
|
||||||
|
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
|
||||||
|
<hc:DateTimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource DateTimePickerExtend.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
||||||
|
|
||||||
|
<hc:DateTimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
|
||||||
|
<hc:DateTimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource DateTimePickerExtend.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel>
|
||||||
|
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerPlus.Small}"/>
|
||||||
|
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False" Style="{StaticResource DateTimePickerPlus.Small}"/>
|
||||||
|
|
||||||
|
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
|
||||||
|
<hc:DateTimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource DateTimePickerPlus.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
||||||
|
|
||||||
|
<hc:DateTimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
|
||||||
|
<hc:DateTimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource DateTimePickerPlus.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
|
||||||
|
</StackPanel>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
</hc:ScrollViewer>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
+5
-6
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class DateTimePickerDemoCtl
|
||||||
{
|
{
|
||||||
public partial class DateTimePickerDemoCtl
|
public DateTimePickerDemoCtl()
|
||||||
{
|
{
|
||||||
public DateTimePickerDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class DialogDemoCtl
|
||||||
{
|
{
|
||||||
public partial class DialogDemoCtl
|
public DialogDemoCtl()
|
||||||
{
|
{
|
||||||
public DialogDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,39 +6,41 @@
|
|||||||
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
||||||
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension">
|
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<WrapPanel Margin="16">
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<StackPanel Margin="16" Width="300">
|
<hc:UniformSpacingPanel Margin="32" Spacing="32" ChildWrapping="Wrap">
|
||||||
<hc:Divider/>
|
<StackPanel Width="300">
|
||||||
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}"/>
|
<hc:Divider/>
|
||||||
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}" Padding="10,0"/>
|
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}"/>
|
||||||
<hc:Divider LineStrokeThickness="2" LineStroke="{DynamicResource DarkPrimaryBrush}"/>
|
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}" Padding="10,0"/>
|
||||||
<hc:Divider LineStrokeDashArray="2,2"/>
|
<hc:Divider LineStrokeThickness="2" LineStroke="{DynamicResource DarkPrimaryBrush}"/>
|
||||||
</StackPanel>
|
<hc:Divider LineStrokeDashArray="2,2"/>
|
||||||
<StackPanel Margin="16" Width="300">
|
|
||||||
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}" HorizontalContentAlignment="Left"/>
|
|
||||||
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}" Padding="10,0" HorizontalContentAlignment="Right"/>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
|
||||||
<hc:Divider Orientation="Vertical" MaxHeight="16"/>
|
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
|
||||||
<hc:Divider Orientation="Vertical" MaxHeight="16"/>
|
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" Margin="0,16,0,0">
|
<StackPanel Width="300">
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}" HorizontalContentAlignment="Left"/>
|
||||||
<hc:Divider LineStrokeThickness="2" Orientation="Vertical" MaxHeight="16"/>
|
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}" Padding="10,0" HorizontalContentAlignment="Right"/>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<StackPanel Orientation="Horizontal">
|
||||||
<hc:Divider LineStrokeThickness="2" Orientation="Vertical" MaxHeight="16"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<hc:Divider Orientation="Vertical" MaxHeight="16"/>
|
||||||
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
<hc:Divider Orientation="Vertical" MaxHeight="16"/>
|
||||||
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Orientation="Horizontal" Margin="0,16,0,0">
|
||||||
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
<hc:Divider LineStrokeThickness="2" Orientation="Vertical" MaxHeight="16"/>
|
||||||
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
<hc:Divider LineStrokeThickness="2" Orientation="Vertical" MaxHeight="16"/>
|
||||||
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Orientation="Horizontal" Margin="0,16,0,0">
|
||||||
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
<hc:Divider LineStrokeThickness="2" LineStroke="{DynamicResource DarkPrimaryBrush}" Orientation="Vertical" MaxHeight="16"/>
|
||||||
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
<hc:Divider LineStrokeThickness="2" LineStroke="{DynamicResource DarkPrimaryBrush}" Orientation="Vertical" MaxHeight="16"/>
|
||||||
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
</StackPanel>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal" Margin="0,16,0,0">
|
</hc:UniformSpacingPanel>
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
</hc:ScrollViewer>
|
||||||
<hc:Divider LineStrokeThickness="2" LineStroke="{DynamicResource DarkPrimaryBrush}" Orientation="Vertical" MaxHeight="16"/>
|
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
|
||||||
<hc:Divider LineStrokeThickness="2" LineStroke="{DynamicResource DarkPrimaryBrush}" Orientation="Vertical" MaxHeight="16"/>
|
|
||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
|
||||||
</StackPanel>
|
|
||||||
</StackPanel>
|
|
||||||
</WrapPanel>
|
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class DividerDemoCtl
|
||||||
{
|
{
|
||||||
public partial class DividerDemoCtl
|
public DividerDemoCtl()
|
||||||
{
|
{
|
||||||
public DividerDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class DrawerDemoCtl
|
||||||
{
|
{
|
||||||
public partial class DrawerDemoCtl
|
public DrawerDemoCtl()
|
||||||
{
|
{
|
||||||
public DrawerDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,8 +6,20 @@
|
|||||||
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
||||||
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension">
|
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<StackPanel Margin="32" VerticalAlignment="Center">
|
<hc:UniformSpacingPanel Margin="32" VerticalAlignment="Center" Orientation="Vertical" Spacing="16">
|
||||||
<hc:ElementGroup Orientation="Horizontal">
|
<hc:ElementGroup Orientation="Horizontal" Layout="Stack">
|
||||||
|
<Button HorizontalAlignment="Stretch" Width="auto" Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
<Button HorizontalAlignment="Stretch" Width="auto" Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
<Button HorizontalAlignment="Stretch" Width="auto" Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
<Button HorizontalAlignment="Stretch" Width="auto" Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
</hc:ElementGroup>
|
||||||
|
<hc:ElementGroup Orientation="Horizontal" MaxWidth="500">
|
||||||
|
<ToggleButton HorizontalAlignment="Stretch" Width="auto" Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
|
<Button HorizontalAlignment="Stretch" Width="auto" Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
<ToggleButton HorizontalAlignment="Stretch" Width="auto" Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
|
<Button HorizontalAlignment="Stretch" Width="auto" Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
|
</hc:ElementGroup>
|
||||||
|
<hc:ElementGroup Orientation="Horizontal" Layout="Stack">
|
||||||
<Border Style="{StaticResource BorderRegion}" Padding="6,0">
|
<Border Style="{StaticResource BorderRegion}" Padding="6,0">
|
||||||
<Path Data="{StaticResource ClockGeometry}" Width="16" Height="16" Stretch="Uniform" Fill="{DynamicResource BorderBrush}"/>
|
<Path Data="{StaticResource ClockGeometry}" Width="16" Height="16" Stretch="Uniform" Fill="{DynamicResource BorderBrush}"/>
|
||||||
</Border>
|
</Border>
|
||||||
@@ -15,11 +27,20 @@
|
|||||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||||
</hc:ElementGroup>
|
</hc:ElementGroup>
|
||||||
<hc:ElementGroup Margin="0,16,0,0">
|
<hc:ElementGroup>
|
||||||
<TextBox/>
|
<hc:ElementGroup.ItemsPanel>
|
||||||
<Button HorizontalAlignment="Stretch" Width="auto" Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
<ItemsPanelTemplate>
|
||||||
<ToggleButton HorizontalAlignment="Stretch" Width="auto" Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition/>
|
||||||
|
<ColumnDefinition Width="Auto"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
</Grid>
|
||||||
|
</ItemsPanelTemplate>
|
||||||
|
</hc:ElementGroup.ItemsPanel>
|
||||||
|
<TextBox HorizontalAlignment="Stretch" DockPanel.Dock="Left"/>
|
||||||
|
<Button Grid.Column="1" Width="100" Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}" DockPanel.Dock="Right" HorizontalAlignment="Right" Style="{StaticResource ButtonPrimary}"/>
|
||||||
</hc:ElementGroup>
|
</hc:ElementGroup>
|
||||||
</StackPanel>
|
</hc:UniformSpacingPanel>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class ElementGroupDemoCtl
|
||||||
{
|
{
|
||||||
public partial class ElementGroupDemoCtl
|
public ElementGroupDemoCtl()
|
||||||
{
|
{
|
||||||
public ElementGroupDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
</Style>
|
</Style>
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<ScrollViewer>
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<hc:FlexPanel Margin="32" AlignItems="FlexStart" AlignContent="SpaceBetween" JustifyContent="SpaceAround" FlexWrap="WrapReverse" FlexDirection="RowReverse">
|
<hc:FlexPanel Margin="32" AlignItems="FlexStart" AlignContent="SpaceBetween" JustifyContent="SpaceAround" FlexWrap="WrapReverse" FlexDirection="RowReverse">
|
||||||
<Border hc:FlexPanel.Order="99" Height="50" Style="{StaticResource Border4FlexPanelDemoStyle}">
|
<Border hc:FlexPanel.Order="99" Height="50" Style="{StaticResource Border4FlexPanelDemoStyle}">
|
||||||
<TextBlock Text="0" Style="{StaticResource TextBlockTitle}"/>
|
<TextBlock Text="0" Style="{StaticResource TextBlockTitle}"/>
|
||||||
@@ -45,6 +45,6 @@
|
|||||||
<TextBlock Text="9" Style="{StaticResource TextBlockTitle}"/>
|
<TextBlock Text="9" Style="{StaticResource TextBlockTitle}"/>
|
||||||
</Border>
|
</Border>
|
||||||
</hc:FlexPanel>
|
</hc:FlexPanel>
|
||||||
</ScrollViewer>
|
</hc:ScrollViewer>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class FlexPanelDemoCtl : IFull
|
||||||
{
|
{
|
||||||
public partial class FlexPanelDemoCtl : IFull
|
public FlexPanelDemoCtl()
|
||||||
{
|
{
|
||||||
public FlexPanelDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,8 @@
|
|||||||
Background="{DynamicResource RegionBrush}"
|
Background="{DynamicResource RegionBrush}"
|
||||||
xmlns:hc="https://handyorg.github.io/handycontrol">
|
xmlns:hc="https://handyorg.github.io/handycontrol">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<hc:FlipClock Margin="32"/>
|
<Viewbox MaxWidth="520">
|
||||||
|
<hc:FlipClock Margin="32"/>
|
||||||
|
</Viewbox>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class FlipClockDemoCtl
|
||||||
{
|
{
|
||||||
public partial class FlipClockDemoCtl
|
public FlipClockDemoCtl()
|
||||||
{
|
{
|
||||||
public FlipClockDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+5
-6
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class FloatingBlockDemoCtl
|
||||||
{
|
{
|
||||||
public partial class FloatingBlockDemoCtl
|
public FloatingBlockDemoCtl()
|
||||||
{
|
{
|
||||||
public FloatingBlockDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,17 +1,16 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
{
|
|
||||||
public partial class GifImageDemoCtl : IDisposable
|
|
||||||
{
|
|
||||||
public GifImageDemoCtl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
public partial class GifImageDemoCtl : IDisposable
|
||||||
{
|
{
|
||||||
GifImageMain.Dispose();
|
public GifImageDemoCtl()
|
||||||
}
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
GifImageMain.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<hc:SimplePanel Width="500" Height="400">
|
<hc:SimplePanel Height="400">
|
||||||
<hc:ScrollViewer Name="ScrollViewerDemo" IsInertiaEnabled="True" Margin="0,10,0,0">
|
<hc:ScrollViewer Name="ScrollViewerDemo" IsInertiaEnabled="True" Margin="0,10,0,0">
|
||||||
<Border Height="2000" Margin="8,0">
|
<Border Height="2000" Margin="8,0">
|
||||||
<Border.Background>
|
<Border.Background>
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class GotoTopDemoCtl
|
||||||
{
|
{
|
||||||
public partial class GotoTopDemoCtl
|
public GotoTopDemoCtl()
|
||||||
{
|
{
|
||||||
public GotoTopDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,24 +4,26 @@
|
|||||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<hc:TransitioningContentControl>
|
<hc:TransitioningContentControl>
|
||||||
<StackPanel Margin="32" Orientation="Horizontal">
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<UniformGrid Rows="3" Columns="3" Width="240" Height="240">
|
<hc:UniformSpacingPanel Margin="32" ChildWrapping="Wrap" Spacing="16" ItemHorizontalAlignment="Center">
|
||||||
<hc:Gravatar Id="User1"/>
|
<UniformGrid Rows="3" Columns="3" Width="240" Height="240">
|
||||||
<hc:Gravatar Id="User2"/>
|
<hc:Gravatar Id="User1"/>
|
||||||
<hc:Gravatar Style="{StaticResource GravatarCircleImg}">
|
<hc:Gravatar Id="User2"/>
|
||||||
<Image Source="/HandyControlDemo;component/Resources/Img/Album/2.jpg"/>
|
<hc:Gravatar Style="{StaticResource GravatarCircleImg}">
|
||||||
</hc:Gravatar>
|
<Image Source="/HandyControlDemo;component/Resources/Img/Album/2.jpg"/>
|
||||||
<hc:Gravatar Id="User4"/>
|
</hc:Gravatar>
|
||||||
<hc:Gravatar Id="User5" Style="{StaticResource GravatarCircle}"/>
|
<hc:Gravatar Id="User4"/>
|
||||||
<hc:Gravatar Id="User6"/>
|
<hc:Gravatar Id="User5" Style="{StaticResource GravatarCircle}"/>
|
||||||
<hc:Gravatar Style="{StaticResource GravatarCircle}" Source="/HandyControlDemo;component/Resources/Img/Album/1.jpg"/>
|
<hc:Gravatar Id="User6"/>
|
||||||
<hc:Gravatar Id="User8"/>
|
<hc:Gravatar Style="{StaticResource GravatarCircle}" Source="/HandyControlDemo;component/Resources/Img/Album/1.jpg"/>
|
||||||
<hc:Gravatar Id="User9"/>
|
<hc:Gravatar Id="User8"/>
|
||||||
</UniformGrid>
|
<hc:Gravatar Id="User9"/>
|
||||||
<StackPanel Margin="16,0,0,0" Height="220" VerticalAlignment="Center">
|
</UniformGrid>
|
||||||
<TextBox Text="User1" Name="TextBoxName" Width="180"/>
|
<StackPanel Width="240" Height="220" VerticalAlignment="Center">
|
||||||
<hc:Gravatar Height="180" Width="180" Id="{Binding Text,ElementName=TextBoxName}" Margin="10"/>
|
<TextBox Text="User1" Name="TextBoxName" Width="180"/>
|
||||||
</StackPanel>
|
<hc:Gravatar Height="180" Width="180" Id="{Binding Text,ElementName=TextBoxName}" Margin="10"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
</hc:ScrollViewer>
|
||||||
</hc:TransitioningContentControl>
|
</hc:TransitioningContentControl>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class GravatarDemoCtl
|
||||||
{
|
{
|
||||||
public partial class GravatarDemoCtl
|
public GravatarDemoCtl()
|
||||||
{
|
{
|
||||||
public GravatarDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
||||||
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
||||||
Background="{DynamicResource RegionBrush}">
|
Background="{DynamicResource RegionBrush}">
|
||||||
<ScrollViewer>
|
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||||
<StackPanel Margin="32">
|
<StackPanel Margin="32">
|
||||||
<TextBlock Text="{ex:Lang Key={x:Static langs:LangKeys.BasicLayout}}" Style="{StaticResource TextBlockLargeBold}" HorizontalAlignment="Left"/>
|
<TextBlock Text="{ex:Lang Key={x:Static langs:LangKeys.BasicLayout}}" Style="{StaticResource TextBlockLargeBold}" HorizontalAlignment="Left"/>
|
||||||
<hc:Row Margin="0,20,0,0">
|
<hc:Row Margin="0,20,0,0">
|
||||||
@@ -154,5 +154,5 @@
|
|||||||
</hc:Col>
|
</hc:Col>
|
||||||
</hc:Row>
|
</hc:Row>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ScrollViewer>
|
</hc:ScrollViewer>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class GridDemoCtl : IFull
|
||||||
{
|
{
|
||||||
public partial class GridDemoCtl : IFull
|
public GridDemoCtl()
|
||||||
{
|
{
|
||||||
public GridDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
|
|
||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class GrowlDemoCtl
|
||||||
{
|
{
|
||||||
public partial class GrowlDemoCtl
|
public GrowlDemoCtl()
|
||||||
{
|
{
|
||||||
public GrowlDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+5
-6
@@ -1,10 +1,9 @@
|
|||||||
namespace HandyControlDemo.UserControl
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class HoneycombPanelDemoCtl
|
||||||
{
|
{
|
||||||
public partial class HoneycombPanelDemoCtl
|
public HoneycombPanelDemoCtl()
|
||||||
{
|
{
|
||||||
public HoneycombPanelDemoCtl()
|
InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loaded 100 of 942 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user