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://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://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! 😀
|
||||
|
||||
|
||||
@@ -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
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.28729.10
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.1.32228.430
|
||||
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}"
|
||||
EndProject
|
||||
@@ -30,16 +30,31 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
||||
Directory.Build.Props = Directory.Build.Props
|
||||
EndProjectSection
|
||||
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
|
||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||
Shared\HandyControl_Shared\HandyControl_Shared.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
|
||||
Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
|
||||
Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
|
||||
Shared\Microsoft.Windows.Shell\Microsoft.Windows.Shell.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
|
||||
Shared\System.Windows.Interactivity\System.Windows.Interactivity.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
|
||||
Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.projitems*{3531857c-28fc-4e0f-82d9-bfbb70740e04}*SharedItemsImports = 13
|
||||
Shared\System.Windows.Interactivity\System.Windows.Interactivity.projitems*{6f0c9cff-2269-46a7-9664-478354c582a4}*SharedItemsImports = 13
|
||||
Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.projitems*{9a7b52e6-94bb-4e7e-bb6a-7cf6761b79a7}*SharedItemsImports = 5
|
||||
Shared\HandyControl_Shared\HandyControl_Shared.projitems*{aac11083-faca-405d-9197-5c1212d65656}*SharedItemsImports = 13
|
||||
Shared\Microsoft.Windows.Shell\Microsoft.Windows.Shell.projitems*{bbe51380-8b21-49ff-9cfc-b29447a40999}*SharedItemsImports = 13
|
||||
Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.projitems*{c4694269-c9b8-45d5-87f8-d0088c532510}*SharedItemsImports = 13
|
||||
Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.projitems*{d8ae88f8-c36b-4d10-a7f9-22ffcfba5231}*SharedItemsImports = 5
|
||||
Shared\HandyControl_Shared\HandyControl_Shared.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
|
||||
Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
|
||||
Shared\Microsoft.Expression.Interactions\Microsoft.Expression.Interactions.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
|
||||
Shared\System.Windows.Interactivity\System.Windows.Interactivity.projitems*{dc966e3d-bcff-4652-98cf-070e5494749a}*SharedItemsImports = 5
|
||||
Shared\Microsoft.Expression.Drawing\Microsoft.Expression.Drawing.projitems*{e5dc7c25-6293-4660-b5fb-186496386b90}*SharedItemsImports = 13
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -93,6 +108,9 @@ Global
|
||||
{D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231} = {35E3F9C0-8924-4536-BE09-F3761FDBF066}
|
||||
{D8A4748C-0500-4F63-BC47-3506658C68F7} = {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
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {D4636382-1A18-4079-A3E7-054DD970F179}
|
||||
|
||||
@@ -83,6 +83,9 @@
|
||||
</ItemGroup>
|
||||
<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.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>
|
||||
<Resource Include="..\..\Shared\HandyControl_Shared\Resources\dropper.cur">
|
||||
<Link>Resources\dropper.cur</Link>
|
||||
|
||||
@@ -99,10 +99,10 @@
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<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.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/>
|
||||
</hc:ScrollViewer>
|
||||
</hc:ToggleBlock.CheckedContent>
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -83,6 +83,9 @@
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<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>
|
||||
<Resource Include="..\..\Shared\HandyControl_Shared\Resources\dropper.cur">
|
||||
<Link>Resources\dropper.cur</Link>
|
||||
|
||||
@@ -854,8 +854,8 @@
|
||||
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Basic\InteractiveDialogViewModel.cs">
|
||||
<Link>ViewModel\InteractiveDialogViewModel.cs</Link>
|
||||
</Resource>
|
||||
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Common\ComboBoxDemoViewModel.cs">
|
||||
<Link>ViewModel\ComboBoxDemoViewModel.cs</Link>
|
||||
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Common\InputElementDemoViewModel.cs">
|
||||
<Link>ViewModel\InputElementDemoViewModel.cs</Link>
|
||||
</Resource>
|
||||
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Controls\AutoCompleteTextBoxDemoViewModel.cs">
|
||||
<Link>ViewModel\AutoCompleteTextBoxDemoViewModel.cs</Link>
|
||||
@@ -887,9 +887,6 @@
|
||||
<Resource Include="..\..\Shared\HandyControlDemo_Shared\ViewModel\Controls\PaginationDemoViewModel.cs">
|
||||
<Link>ViewModel\PaginationDemoViewModel.cs</Link>
|
||||
</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">
|
||||
<Link>ViewModel\SideMenuDemoViewModel.cs</Link>
|
||||
</Resource>
|
||||
|
||||
@@ -15,124 +15,123 @@ using HandyControlDemo.Data;
|
||||
using HandyControlDemo.Properties.Langs;
|
||||
using HandyControlDemo.Tools;
|
||||
|
||||
namespace HandyControlDemo
|
||||
namespace HandyControlDemo;
|
||||
|
||||
public partial class App
|
||||
{
|
||||
public partial class App
|
||||
{
|
||||
#pragma warning disable IDE0052
|
||||
[SuppressMessage("ReSharper", "NotAccessedField.Local")]
|
||||
private static Mutex AppMutex;
|
||||
[SuppressMessage("ReSharper", "NotAccessedField.Local")]
|
||||
private static Mutex AppMutex;
|
||||
#pragma warning restore IDE0052
|
||||
|
||||
public App()
|
||||
{
|
||||
public App()
|
||||
{
|
||||
#if !NET40
|
||||
var cachePath = $"{AppDomain.CurrentDomain.BaseDirectory}Cache";
|
||||
if (!Directory.Exists(cachePath))
|
||||
{
|
||||
Directory.CreateDirectory(cachePath);
|
||||
}
|
||||
ProfileOptimization.SetProfileRoot(cachePath);
|
||||
ProfileOptimization.StartProfile("Profile");
|
||||
#endif
|
||||
}
|
||||
|
||||
protected override void OnStartup(StartupEventArgs e)
|
||||
var cachePath = $"{AppDomain.CurrentDomain.BaseDirectory}Cache";
|
||||
if (!Directory.Exists(cachePath))
|
||||
{
|
||||
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();
|
||||
|
||||
foreach (var process in Process.GetProcessesByName(current.ProcessName))
|
||||
if (process.Id != current.Id)
|
||||
{
|
||||
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");
|
||||
splashScreen.Show(true);
|
||||
UpdateSkin(GlobalData.Config.Skin);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
UpdateSkin(GlobalData.Config.Skin);
|
||||
}
|
||||
|
||||
ConfigHelper.Instance.SetWindowDefaultStyle();
|
||||
ConfigHelper.Instance.SetNavigationWindowDefaultStyle();
|
||||
ConfigHelper.Instance.SetWindowDefaultStyle();
|
||||
ConfigHelper.Instance.SetNavigationWindowDefaultStyle();
|
||||
|
||||
#if NET40
|
||||
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
|
||||
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
|
||||
#else
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
#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);
|
||||
GlobalData.Save();
|
||||
}
|
||||
|
||||
internal void UpdateSkin(SkinType skin)
|
||||
Source = new Uri("pack://application:,,,/HandyControl;component/Themes/Theme.xaml")
|
||||
});
|
||||
skins1.MergedDictionaries.Add(new ResourceDictionary
|
||||
{
|
||||
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));
|
||||
Source = new Uri("pack://application:,,,/HandyControlDemo;component/Resources/Themes/Theme.xaml")
|
||||
});
|
||||
|
||||
var skins1 = Resources.MergedDictionaries[1];
|
||||
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();
|
||||
}
|
||||
|
||||
Current.MainWindow?.OnApplyTemplate();
|
||||
}
|
||||
|
||||
private void UpdateRegistry()
|
||||
private void UpdateRegistry()
|
||||
{
|
||||
var processModule = Process.GetCurrentProcess().MainModule;
|
||||
if (processModule != null)
|
||||
{
|
||||
var processModule = Process.GetCurrentProcess().MainModule;
|
||||
if (processModule != null)
|
||||
var registryFilePath = $"{Path.GetDirectoryName(processModule.FileName)}\\Registry.reg";
|
||||
if (!File.Exists(registryFilePath))
|
||||
{
|
||||
var registryFilePath = $"{Path.GetDirectoryName(processModule.FileName)}\\Registry.reg";
|
||||
if (!File.Exists(registryFilePath))
|
||||
var streamResourceInfo = GetResourceStream(new Uri("pack://application:,,,/Resources/Registry.txt"));
|
||||
if (streamResourceInfo != null)
|
||||
{
|
||||
var streamResourceInfo = GetResourceStream(new Uri("pack://application:,,,/Resources/Registry.txt"));
|
||||
if (streamResourceInfo != null)
|
||||
using var reader = new StreamReader(streamResourceInfo.Stream);
|
||||
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);
|
||||
var registryStr = reader.ReadToEnd();
|
||||
var newRegistryStr = registryStr.Replace("#", processModule.FileName.Replace("\\", "\\\\"));
|
||||
File.WriteAllText(registryFilePath, newRegistryStr);
|
||||
Process.Start(new ProcessStartInfo("cmd", $"/c {registryFilePath}")
|
||||
{
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
});
|
||||
}
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
using System;
|
||||
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,
|
||||
Type3,
|
||||
Type4,
|
||||
Type5,
|
||||
Type6
|
||||
}
|
||||
Type1 = 1,
|
||||
Type2,
|
||||
Type3,
|
||||
Type4,
|
||||
Type5,
|
||||
Type6
|
||||
}
|
||||
@@ -1,38 +1,37 @@
|
||||
using System.IO;
|
||||
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();
|
||||
}
|
||||
catch
|
||||
{
|
||||
Config = new AppConfig();
|
||||
}
|
||||
var json = File.ReadAllText(AppConfig.SavePath);
|
||||
Config = (string.IsNullOrEmpty(json) ? new AppConfig() : JsonConvert.DeserializeObject<AppConfig>(json)) ?? new AppConfig();
|
||||
}
|
||||
else
|
||||
catch
|
||||
{
|
||||
Config = new AppConfig();
|
||||
}
|
||||
}
|
||||
|
||||
public static void Save()
|
||||
else
|
||||
{
|
||||
var json = JsonConvert.SerializeObject(Config);
|
||||
File.WriteAllText(AppConfig.SavePath, json);
|
||||
Config = new AppConfig();
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
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
|
||||
{
|
||||
public class CoverViewDemoModel
|
||||
{
|
||||
public string ImgPath { get; set; }
|
||||
namespace HandyControlDemo.Data;
|
||||
|
||||
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;
|
||||
|
||||
|
||||
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 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; }
|
||||
|
||||
private string _title;
|
||||
|
||||
public string Title
|
||||
{
|
||||
get => _title;
|
||||
get => _title;
|
||||
#if NET40
|
||||
set => Set(nameof(Title), ref _title, value);
|
||||
#else
|
||||
set => Set(ref _title, value);
|
||||
set => Set(ref _title, value);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
private int _selectedIndex;
|
||||
private int _selectedIndex;
|
||||
|
||||
public int SelectedIndex
|
||||
{
|
||||
get => _selectedIndex;
|
||||
public int SelectedIndex
|
||||
{
|
||||
get => _selectedIndex;
|
||||
#if NET40
|
||||
set => Set(nameof(SelectedIndex), ref _selectedIndex, value);
|
||||
#else
|
||||
set => Set(ref _selectedIndex, value);
|
||||
set => Set(ref _selectedIndex, value);
|
||||
#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;
|
||||
|
||||
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;
|
||||
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;
|
||||
get => _queriesText;
|
||||
#if NET40
|
||||
set => Set(nameof(QueriesText), ref _queriesText, value);
|
||||
set => Set(nameof(QueriesText), ref _queriesText, value);
|
||||
#else
|
||||
set => Set(ref _queriesText, value);
|
||||
set => Set(ref _queriesText, value);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsVisible
|
||||
{
|
||||
get => _isVisible;
|
||||
public bool IsVisible
|
||||
{
|
||||
get => _isVisible;
|
||||
#if NET40
|
||||
set => Set(nameof(IsVisible), ref _isVisible, value);
|
||||
set => Set(nameof(IsVisible), ref _isVisible, value);
|
||||
#else
|
||||
set => Set(ref _isVisible, value);
|
||||
set => Set(ref _isVisible, value);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,12 @@
|
||||
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.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")]
|
||||
public int Integer { get; set; }
|
||||
[Category("Category2")]
|
||||
public int Integer { get; set; }
|
||||
|
||||
[Category("Category2")]
|
||||
public bool Boolean { get; set; }
|
||||
[Category("Category2")]
|
||||
public bool Boolean { get; set; }
|
||||
|
||||
[Category("Category1")]
|
||||
public Gender Enum { get; set; }
|
||||
[Category("Category1")]
|
||||
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
|
||||
{
|
||||
Male,
|
||||
Female
|
||||
}
|
||||
public enum Gender
|
||||
{
|
||||
Male,
|
||||
Female
|
||||
}
|
||||
@@ -1,9 +1,8 @@
|
||||
namespace HandyControlDemo.Data
|
||||
{
|
||||
public class StepBarDemoModel
|
||||
{
|
||||
public string Header { get; set; }
|
||||
namespace HandyControlDemo.Data;
|
||||
|
||||
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
|
||||
{
|
||||
public class TabControlDemoModel
|
||||
{
|
||||
public string Header { get; set; }
|
||||
namespace HandyControlDemo.Data;
|
||||
|
||||
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\Win32Helper.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\HighlightingProvider.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Tools\ValidationRule\NumericUpDownDemoRule.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)UserControl\Basic\Avatar.xaml.cs">
|
||||
<DependentUpon>Avatar.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@@ -410,7 +411,6 @@
|
||||
</Compile>
|
||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Basic\ChatBoxViewModel.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\BadgeDemoViewModel.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\CardDemoViewModel.cs" />
|
||||
@@ -421,13 +421,13 @@
|
||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\NotificationDemoViewModel.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\NotifyIconDemoViewModel.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\SplitButtonDemoViewModel.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\SpriteDemoViewModel.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\StepBarDemoViewModel.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Controls\TabControlDemoViewModel.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\DemoViewModelBase`1.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\Main\ItemsDisplayViewModel.cs" />
|
||||
|
||||
@@ -10,45 +10,44 @@ using HandyControlDemo.Tools;
|
||||
using HandyControlDemo.UserControl;
|
||||
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;
|
||||
NonClientAreaContent = new NonClientAreaContent();
|
||||
ControlMain.Content = new MainWindowContent();
|
||||
Dialog.SetToken(this, MessageToken.MainWindow);
|
||||
WindowAttach.SetIgnoreAltF4(this, true);
|
||||
|
||||
GlobalShortcut.Init(new List<KeyBinding>
|
||||
{
|
||||
new(ViewModelLocator.Instance.Main.GlobalShortcutInfoCmd, Key.I, ModifierKeys.Control | ModifierKeys.Alt),
|
||||
new(ViewModelLocator.Instance.Main.GlobalShortcutWarningCmd, Key.E, ModifierKeys.Control | ModifierKeys.Alt)
|
||||
});
|
||||
Messenger.Default.Send(true, MessageToken.FullSwitch);
|
||||
Messenger.Default.Send(AssemblyHelper.CreateInternalInstance($"UserControl.{MessageToken.PracticalDemo}"), MessageToken.LoadShowContent);
|
||||
}
|
||||
|
||||
Dialog.SetToken(this, MessageToken.MainWindow);
|
||||
WindowAttach.SetIgnoreAltF4(this, true);
|
||||
|
||||
Messenger.Default.Send(true, MessageToken.FullSwitch);
|
||||
Messenger.Default.Send(AssemblyHelper.CreateInternalInstance($"UserControl.{MessageToken.PracticalDemo}"), MessageToken.LoadShowContent);
|
||||
protected override void OnClosing(CancelEventArgs e)
|
||||
{
|
||||
if (GlobalData.NotifyIconIsShow)
|
||||
{
|
||||
MessageBox.Info(Properties.Langs.Lang.AppClosingTip, Properties.Langs.Lang.Tip);
|
||||
Hide();
|
||||
e.Cancel = true;
|
||||
}
|
||||
|
||||
protected override void OnClosing(CancelEventArgs e)
|
||||
else
|
||||
{
|
||||
if (GlobalData.NotifyIconIsShow)
|
||||
{
|
||||
MessageBox.Info(Properties.Langs.Lang.AppClosingTip, Properties.Langs.Lang.Tip);
|
||||
Hide();
|
||||
e.Cancel = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
base.OnClosing(e);
|
||||
}
|
||||
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.Tools;
|
||||
|
||||
namespace HandyControlDemo.Resources
|
||||
{
|
||||
public class DemoTheme : Theme
|
||||
{
|
||||
public override ResourceDictionary GetSkin(SkinType skinType) =>
|
||||
ResourceHelper.GetSkin(typeof(App).Assembly, "Resources/Themes", skinType);
|
||||
namespace HandyControlDemo.Resources;
|
||||
|
||||
public override ResourceDictionary GetTheme() => new()
|
||||
{
|
||||
Source = new Uri("pack://application:,,,/HandyControlDemo;component/Resources/Themes/Theme.xaml")
|
||||
};
|
||||
}
|
||||
public class DemoTheme : Theme
|
||||
{
|
||||
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">
|
||||
<Setter Property="Visibility" Value="{Binding IsVisible,Converter={StaticResource Boolean2VisibilityConverter}}"/>
|
||||
<Setter Property="hc:BorderElement.CornerRadius" Value="4"/>
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
</Style>
|
||||
|
||||
@@ -79,8 +78,10 @@
|
||||
</Style>
|
||||
|
||||
<Style x:Key="ListBoxTransparent" BasedOn="{StaticResource ListBoxBaseStyle}" TargetType="ListBox">
|
||||
<Setter Property="hc:BorderElement.CornerRadius" Value="4"/>
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
<Setter Property="ItemContainerStyle" Value="{StaticResource ListBoxItemTransparent}"/>
|
||||
<Setter Property="hc:ScrollViewer.IsInertiaEnabled" Value="True"/>
|
||||
</Style>
|
||||
|
||||
<ItemsPanelTemplate x:Key="FluidMoveBehaviorWrapPanelItemsPanelTemplate">
|
||||
@@ -176,7 +177,7 @@
|
||||
</Style>
|
||||
</ControlTemplate.Resources>
|
||||
<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>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="WordWrap" Value="True">
|
||||
|
||||
@@ -12,443 +12,430 @@ using HandyControlDemo.Properties.Langs;
|
||||
using HandyControlDemo.Tools.Converter;
|
||||
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
|
||||
},
|
||||
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++)
|
||||
Header = "Success",
|
||||
BackgroundToken = ResourceToken.SuccessBrush
|
||||
},
|
||||
new TabControlDemoModel
|
||||
{
|
||||
var dataList = new List<DemoDataModel>();
|
||||
for (var j = 0; j < 3; j++)
|
||||
{
|
||||
dataList.Add(new DemoDataModel
|
||||
{
|
||||
Index = j,
|
||||
IsSelected = j % 2 == 0,
|
||||
Name = $"SubName{j}",
|
||||
Type = (DemoType) j
|
||||
});
|
||||
}
|
||||
var model = new DemoDataModel
|
||||
{
|
||||
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);
|
||||
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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
internal List<DemoDataModel> GetDemoDataList(int count)
|
||||
internal List<DemoDataModel> GetDemoDataList()
|
||||
{
|
||||
var list = new List<DemoDataModel>();
|
||||
for (var i = 1; i <= 20; i++)
|
||||
{
|
||||
var list = new List<DemoDataModel>();
|
||||
for (var i = 1; i <= count; i++)
|
||||
var dataList = new List<DemoDataModel>();
|
||||
for (var j = 0; j < 3; j++)
|
||||
{
|
||||
var index = i % 6 + 1;
|
||||
var model = new DemoDataModel
|
||||
dataList.Add(new DemoDataModel
|
||||
{
|
||||
Index = i,
|
||||
IsSelected = i % 2 == 0,
|
||||
Name = $"Name{i}",
|
||||
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<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
|
||||
Index = j,
|
||||
IsSelected = j % 2 == 0,
|
||||
Name = $"SubName{j}",
|
||||
Type = (DemoType) j
|
||||
});
|
||||
}
|
||||
|
||||
return resultList;
|
||||
var model = new DemoDataModel
|
||||
{
|
||||
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",
|
||||
"Controls" => "extend_controls",
|
||||
"Tools" => "tools",
|
||||
_ => string.Empty
|
||||
Index = i,
|
||||
IsSelected = i % 2 == 0,
|
||||
Name = $"Name{i}",
|
||||
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"
|
||||
? "handyorg"
|
||||
: "ghost1372";
|
||||
return $"https://{domainName}.github.io/handycontrol/{key}/{demoItem.Name[0].ToString().ToLower()}{demoItem.Name.Substring(1)}";
|
||||
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
|
||||
});
|
||||
}
|
||||
|
||||
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.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)
|
||||
{
|
||||
if (value is HatchStyle style)
|
||||
{
|
||||
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();
|
||||
}
|
||||
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 HandyControl.Tools;
|
||||
|
||||
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;
|
||||
}
|
||||
namespace HandyControlDemo.Tools.Converter;
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
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)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
}
|
||||
@@ -3,43 +3,42 @@ using System.Globalization;
|
||||
using System.Text;
|
||||
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();
|
||||
int num;
|
||||
if (parameter is string numStr)
|
||||
{
|
||||
if (!int.TryParse(numStr, out num))
|
||||
{
|
||||
return strValue;
|
||||
}
|
||||
}
|
||||
else if (parameter is int intValue)
|
||||
{
|
||||
num = intValue;
|
||||
}
|
||||
else
|
||||
if (!int.TryParse(numStr, out num))
|
||||
{
|
||||
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)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,11 @@
|
||||
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.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;
|
||||
|
||||
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))
|
||||
{
|
||||
if (CacheDic.TryGetValue(key, out var value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
return null;
|
||||
return value;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var type = Type.GetType($"{NameSpaceStr}.{className}");
|
||||
return type == null ? null : Activator.CreateInstance(type);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,15 @@
|
||||
using System.Diagnostics;
|
||||
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
|
||||
var netVersion = "NET 40";
|
||||
var netVersion = "NET 40";
|
||||
#elif NET45
|
||||
var netVersion = "NET 45";
|
||||
#elif NET451
|
||||
@@ -35,14 +35,13 @@ namespace HandyControlDemo.Tools
|
||||
#elif NET6_0
|
||||
var netVersion = "NET 60";
|
||||
#elif NETCOREAPP3_0
|
||||
var netVersion = "CORE 30";
|
||||
var netVersion = "CORE 30";
|
||||
#elif NETCOREAPP3_1
|
||||
var netVersion = "CORE 31";
|
||||
#endif
|
||||
return $"v {versionInfo.FileVersion} {netVersion}";
|
||||
}
|
||||
|
||||
internal static string GetCopyright() =>
|
||||
FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).LegalCopyright;
|
||||
return $"v {versionInfo.FileVersion} {netVersion}";
|
||||
}
|
||||
|
||||
internal static string GetCopyright() =>
|
||||
FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).LegalCopyright;
|
||||
}
|
||||
@@ -1,14 +1,13 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace HandyControlDemo.Tools
|
||||
{
|
||||
internal class Win32Helper
|
||||
{
|
||||
[DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
|
||||
public static extern bool SetForegroundWindow(IntPtr hWnd);
|
||||
namespace HandyControlDemo.Tools;
|
||||
|
||||
[DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
|
||||
public static extern int MciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
|
||||
}
|
||||
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)]
|
||||
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.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;
|
||||
|
||||
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)
|
||||
};
|
||||
}
|
||||
Providers[skinType] = provider ?? throw new ArgumentNullException(nameof(provider));
|
||||
provider.InitDefinitions();
|
||||
}
|
||||
|
||||
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>>
|
||||
{
|
||||
["XML"] = new(() => LoadDefinition("XML-Dark")),
|
||||
["C#"] = new(() => LoadDefinition("CSharp-Dark")),
|
||||
};
|
||||
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
|
||||
{
|
||||
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.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(
|
||||
"Source", typeof(BitmapFrame), typeof(Avatar), new PropertyMetadata(default(BitmapFrame)));
|
||||
public static readonly DependencyProperty SourceProperty = DependencyProperty.Register(
|
||||
"Source", typeof(BitmapFrame), typeof(Avatar), new PropertyMetadata(default(BitmapFrame)));
|
||||
|
||||
public BitmapFrame Source
|
||||
{
|
||||
get => (BitmapFrame) GetValue(SourceProperty);
|
||||
set => SetValue(SourceProperty, value);
|
||||
}
|
||||
public BitmapFrame Source
|
||||
{
|
||||
get => (BitmapFrame) GetValue(SourceProperty);
|
||||
set => SetValue(SourceProperty, value);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty UserNameProperty = DependencyProperty.Register(
|
||||
"DisplayName", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||
public static readonly DependencyProperty UserNameProperty = DependencyProperty.Register(
|
||||
"DisplayName", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||
|
||||
public string DisplayName
|
||||
{
|
||||
get => (string) GetValue(UserNameProperty);
|
||||
set => SetValue(UserNameProperty, value);
|
||||
}
|
||||
public string DisplayName
|
||||
{
|
||||
get => (string) GetValue(UserNameProperty);
|
||||
set => SetValue(UserNameProperty, value);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty LinkProperty = DependencyProperty.Register(
|
||||
"Link", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||
public static readonly DependencyProperty LinkProperty = DependencyProperty.Register(
|
||||
"Link", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||
|
||||
public string Link
|
||||
{
|
||||
get => (string) GetValue(LinkProperty);
|
||||
set => SetValue(LinkProperty, value);
|
||||
}
|
||||
public string Link
|
||||
{
|
||||
get => (string) GetValue(LinkProperty);
|
||||
set => SetValue(LinkProperty, value);
|
||||
}
|
||||
}
|
||||
@@ -1,22 +1,21 @@
|
||||
using System.Windows.Controls;
|
||||
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()
|
||||
{
|
||||
InitializeComponent();
|
||||
ListBoxChat.ItemContainerGenerator.ItemsChanged += ItemContainerGenerator_ItemsChanged;
|
||||
}
|
||||
|
||||
private void ItemContainerGenerator_ItemsChanged(object sender, System.Windows.Controls.Primitives.ItemsChangedEventArgs e)
|
||||
{
|
||||
_scrollViewer ??= VisualHelper.GetChild<ScrollViewer>(ListBoxChat);
|
||||
_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 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();
|
||||
|
||||
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);
|
||||
}
|
||||
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 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);
|
||||
animation.EasingFunction = null;
|
||||
animation.Completed += Animation_Completed;
|
||||
ProgressBarTimer.BeginAnimation(RangeBase.ValueProperty, animation);
|
||||
}
|
||||
var animation = AnimationHelper.CreateAnimation(100, 5000);
|
||||
animation.EasingFunction = null;
|
||||
animation.Completed += Animation_Completed;
|
||||
ProgressBarTimer.BeginAnimation(RangeBase.ValueProperty, animation);
|
||||
}
|
||||
|
||||
private void Animation_Completed(object sender, EventArgs e)
|
||||
{
|
||||
ButtonClose.Command.Execute(null);
|
||||
}
|
||||
private void Animation_Completed(object sender, EventArgs e)
|
||||
{
|
||||
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}"
|
||||
DataContext="{Binding BadgeDemo, Source={StaticResource Locator}}">
|
||||
<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">
|
||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Comment}}"/>
|
||||
</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}}"/>
|
||||
</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}"/>
|
||||
</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}}"/>
|
||||
</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}}"/>
|
||||
</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}}" />
|
||||
</hc:Badge>
|
||||
</StackPanel>
|
||||
</hc:UniformSpacingPanel>
|
||||
</hc:TransitioningContentControl>
|
||||
</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:ex="clr-namespace:HandyControlDemo.Tools.Extension">
|
||||
<hc:TransitioningContentControl>
|
||||
<WrapPanel Margin="16" VerticalAlignment="Center">
|
||||
<StackPanel Margin="16">
|
||||
<hc:ButtonGroup>
|
||||
<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}}"/>
|
||||
</hc:ButtonGroup>
|
||||
<hc:ButtonGroup Margin="0,32,0,0">
|
||||
<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>
|
||||
<hc:ButtonGroup Margin="0,32,0,0" 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}}"/>
|
||||
</hc:ButtonGroup>
|
||||
<hc:ButtonGroup Margin="0,32,0,0">
|
||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||
<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}}" IsChecked="True"/>
|
||||
</hc:ButtonGroup>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="16" Orientation="Horizontal">
|
||||
<hc:ButtonGroup Orientation="Vertical">
|
||||
<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}}"/>
|
||||
</hc:ButtonGroup>
|
||||
<hc:ButtonGroup Margin="32,0,0,0" 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}}"/>
|
||||
</hc:ButtonGroup>
|
||||
<hc:ButtonGroup Margin="32,0,0,0" 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}}"/>
|
||||
</hc:ButtonGroup>
|
||||
<hc:ButtonGroup Margin="32,0,0,0" Orientation="Vertical">
|
||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||
<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}}" IsChecked="True"/>
|
||||
</hc:ButtonGroup>
|
||||
</StackPanel>
|
||||
</WrapPanel>
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<hc:UniformSpacingPanel Margin="32" Spacing="32" ChildWrapping="Wrap" VerticalAlignment="Center">
|
||||
<hc:UniformSpacingPanel Spacing="32" Orientation="Vertical">
|
||||
<hc:ButtonGroup>
|
||||
<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}}"/>
|
||||
</hc:ButtonGroup>
|
||||
<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}}"/>
|
||||
</hc:ButtonGroup>
|
||||
<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}}"/>
|
||||
</hc:ButtonGroup>
|
||||
<hc:ButtonGroup>
|
||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||
<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}}" IsChecked="True"/>
|
||||
</hc:ButtonGroup>
|
||||
</hc:UniformSpacingPanel>
|
||||
<hc:UniformSpacingPanel Spacing="32" ChildWrapping="Wrap">
|
||||
<hc:ButtonGroup Orientation="Vertical">
|
||||
<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}}"/>
|
||||
</hc:ButtonGroup>
|
||||
<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}}"/>
|
||||
</hc:ButtonGroup>
|
||||
<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}}"/>
|
||||
</hc:ButtonGroup>
|
||||
<hc:ButtonGroup Orientation="Vertical">
|
||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}" IsChecked="True"/>
|
||||
<RadioButton Content="{ex:Lang Key={x:Static langs:LangKeys.RadioButton}}"/>
|
||||
<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}}" IsChecked="True"/>
|
||||
</hc:ButtonGroup>
|
||||
</hc:UniformSpacingPanel>
|
||||
</hc:UniformSpacingPanel>
|
||||
</hc:ScrollViewer>
|
||||
</hc:TransitioningContentControl>
|
||||
</UserControl>
|
||||
+26
-27
@@ -1,40 +1,39 @@
|
||||
using System.Windows;
|
||||
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(
|
||||
"Source", typeof(BitmapFrame), typeof(Avatar), new PropertyMetadata(default(BitmapFrame)));
|
||||
public static readonly DependencyProperty SourceProperty = DependencyProperty.Register(
|
||||
"Source", typeof(BitmapFrame), typeof(Avatar), new PropertyMetadata(default(BitmapFrame)));
|
||||
|
||||
public BitmapFrame Source
|
||||
{
|
||||
get => (BitmapFrame) GetValue(SourceProperty);
|
||||
set => SetValue(SourceProperty, value);
|
||||
}
|
||||
public BitmapFrame Source
|
||||
{
|
||||
get => (BitmapFrame) GetValue(SourceProperty);
|
||||
set => SetValue(SourceProperty, value);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty UserNameProperty = DependencyProperty.Register(
|
||||
"DisplayName", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||
public static readonly DependencyProperty UserNameProperty = DependencyProperty.Register(
|
||||
"DisplayName", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||
|
||||
public string DisplayName
|
||||
{
|
||||
get => (string) GetValue(UserNameProperty);
|
||||
set => SetValue(UserNameProperty, value);
|
||||
}
|
||||
public string DisplayName
|
||||
{
|
||||
get => (string) GetValue(UserNameProperty);
|
||||
set => SetValue(UserNameProperty, value);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty LinkProperty = DependencyProperty.Register(
|
||||
"Link", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||
public static readonly DependencyProperty LinkProperty = DependencyProperty.Register(
|
||||
"Link", typeof(string), typeof(Avatar), new PropertyMetadata(default(string)));
|
||||
|
||||
public string Link
|
||||
{
|
||||
get => (string) GetValue(LinkProperty);
|
||||
set => SetValue(LinkProperty, value);
|
||||
}
|
||||
public string Link
|
||||
{
|
||||
get => (string) GetValue(LinkProperty);
|
||||
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:data="clr-namespace:HandyControlDemo.Data">
|
||||
<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>
|
||||
<DataTemplate DataType="data:CardModel">
|
||||
<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}"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol">
|
||||
<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="300" Stretch="UniformToFill" Source="/HandyControlDemo;component/Resources/Img/2.jpg"/>
|
||||
<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"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<hc:TransitioningContentControl>
|
||||
<StackPanel Orientation="Horizontal" Margin="32">
|
||||
<userControl:ChatBox>
|
||||
<userControl:ChatBox.Background>
|
||||
<ImageBrush ImageSource="/HandyControlDemo;component/Resources/Img/Chat/chat_back1.jpg" Stretch="Uniform"/>
|
||||
</userControl:ChatBox.Background>
|
||||
</userControl:ChatBox>
|
||||
<userControl:ChatBox Margin="32,0,0,0">
|
||||
<userControl:ChatBox.Background>
|
||||
<ImageBrush ImageSource="/HandyControlDemo;component/Resources/Img/Chat/chat_back2.jpg" Stretch="Uniform"/>
|
||||
</userControl:ChatBox.Background>
|
||||
</userControl:ChatBox>
|
||||
</StackPanel>
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<hc:UniformSpacingPanel Spacing="32" ChildWrapping="Wrap" Margin="32">
|
||||
<userControl:ChatBox>
|
||||
<userControl:ChatBox.Background>
|
||||
<ImageBrush ImageSource="/HandyControlDemo;component/Resources/Img/Chat/chat_back1.jpg" Stretch="Uniform"/>
|
||||
</userControl:ChatBox.Background>
|
||||
</userControl:ChatBox>
|
||||
<userControl:ChatBox>
|
||||
<userControl:ChatBox.Background>
|
||||
<ImageBrush ImageSource="/HandyControlDemo;component/Resources/Img/Chat/chat_back2.jpg" Stretch="Uniform"/>
|
||||
</userControl:ChatBox.Background>
|
||||
</userControl:ChatBox>
|
||||
</hc:UniformSpacingPanel>
|
||||
</hc:ScrollViewer>
|
||||
</hc:TransitioningContentControl>
|
||||
</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"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
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:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<hc:TransitioningContentControl>
|
||||
<ScrollViewer>
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
|
||||
<StackPanel>
|
||||
<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"/>
|
||||
</StackPanel>
|
||||
</hc:UniformSpacingPanel>
|
||||
</ScrollViewer>
|
||||
</hc:ScrollViewer>
|
||||
</hc:TransitioningContentControl>
|
||||
</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"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<hc:TransitioningContentControl>
|
||||
<StackPanel Orientation="Horizontal" Margin="32">
|
||||
<hc:Clock/>
|
||||
<hc:ListClock Margin="16,0,0,0"/>
|
||||
</StackPanel>
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<hc:UniformSpacingPanel Spacing="16" ChildWrapping="Wrap" Margin="32">
|
||||
<hc:Clock/>
|
||||
<hc:ListClock/>
|
||||
</hc:UniformSpacingPanel>
|
||||
</hc:ScrollViewer>
|
||||
</hc:TransitioningContentControl>
|
||||
</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"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
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:langs="clr-namespace:HandyControlDemo.Properties.Langs"
|
||||
xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<hc:TransitioningContentControl>
|
||||
<ScrollViewer>
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
|
||||
<StackPanel>
|
||||
<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}"/>
|
||||
</StackPanel>
|
||||
</hc:UniformSpacingPanel>
|
||||
</ScrollViewer>
|
||||
</hc:ScrollViewer>
|
||||
</hc:TransitioningContentControl>
|
||||
</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"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<hc:TransitioningContentControl>
|
||||
<hc:ScrollViewer VerticalAlignment="Center">
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<WrapPanel ItemHeight="384" ItemWidth="632">
|
||||
<hc:CompareSlider Value="5" Width="600" Height="352">
|
||||
<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"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<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>
|
||||
</UserControl>
|
||||
@@ -1,28 +1,27 @@
|
||||
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[]
|
||||
{
|
||||
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;
|
||||
}
|
||||
CoverFlowMain.PageIndex = 2;
|
||||
}
|
||||
}
|
||||
@@ -7,19 +7,21 @@
|
||||
DataContext="{Binding CoverView,Source={StaticResource Locator}}"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<hc:TransitioningContentControl>
|
||||
<hc:CoverView Margin="27" Width="880" Height="432" ItemWidth="160" ItemHeight="160" ItemsSource="{Binding DataList}">
|
||||
<hc:CoverView.ItemHeaderTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding ImgPath}"/>
|
||||
</DataTemplate>
|
||||
</hc:CoverView.ItemHeaderTemplate>
|
||||
<hc:CoverView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border Margin="10" Height="300" Background="{Binding BackgroundToken,Converter={StaticResource String2BrushConverter}}">
|
||||
<TextBlock Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White"/>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</hc:CoverView.ItemTemplate>
|
||||
</hc:CoverView>
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<hc:CoverView Margin="27" MaxWidth="880" ItemWidth="160" ItemHeight="160" ItemsSource="{Binding DataList}">
|
||||
<hc:CoverView.ItemHeaderTemplate>
|
||||
<DataTemplate>
|
||||
<Image Source="{Binding ImgPath}"/>
|
||||
</DataTemplate>
|
||||
</hc:CoverView.ItemHeaderTemplate>
|
||||
<hc:CoverView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border Margin="10" Height="300" Background="{Binding BackgroundToken,Converter={StaticResource String2BrushConverter}}">
|
||||
<TextBlock Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White"/>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</hc:CoverView.ItemTemplate>
|
||||
</hc:CoverView>
|
||||
</hc:ScrollViewer>
|
||||
</hc:TransitioningContentControl>
|
||||
</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"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<hc:TransitioningContentControl>
|
||||
<StackPanel Margin="32">
|
||||
<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:ScrollViewer IsInertiaEnabled="True">
|
||||
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
|
||||
<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 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}" 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 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 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"/>
|
||||
</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>
|
||||
</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"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<hc:TransitioningContentControl>
|
||||
<StackPanel Margin="32" Orientation="Horizontal">
|
||||
<StackPanel>
|
||||
<hc:DateTimePicker ShowClearButton="True"/>
|
||||
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False"/>
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
|
||||
<StackPanel>
|
||||
<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 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" 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 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"/>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="32,0,0,0">
|
||||
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerPlus}"/>
|
||||
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False" Style="{StaticResource DateTimePickerPlus}"/>
|
||||
<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"/>
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<hc:DateTimePicker ShowClearButton="True" 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 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" 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 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"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
<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"/>
|
||||
</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>
|
||||
</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:ex="clr-namespace:HandyControlDemo.Tools.Extension">
|
||||
<hc:TransitioningContentControl>
|
||||
<WrapPanel Margin="16">
|
||||
<StackPanel Margin="16" Width="300">
|
||||
<hc:Divider/>
|
||||
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}"/>
|
||||
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}" Padding="10,0"/>
|
||||
<hc:Divider LineStrokeThickness="2" LineStroke="{DynamicResource DarkPrimaryBrush}"/>
|
||||
<hc:Divider LineStrokeDashArray="2,2"/>
|
||||
</StackPanel>
|
||||
<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}}"/>
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<hc:UniformSpacingPanel Margin="32" Spacing="32" ChildWrapping="Wrap">
|
||||
<StackPanel Width="300">
|
||||
<hc:Divider/>
|
||||
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}"/>
|
||||
<hc:Divider Content="{ex:Lang Key={x:Static langs:LangKeys.Title}}" Padding="10,0"/>
|
||||
<hc:Divider LineStrokeThickness="2" LineStroke="{DynamicResource DarkPrimaryBrush}"/>
|
||||
<hc:Divider LineStrokeDashArray="2,2"/>
|
||||
</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 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 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 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>
|
||||
</WrapPanel>
|
||||
</hc:UniformSpacingPanel>
|
||||
</hc:ScrollViewer>
|
||||
</hc:TransitioningContentControl>
|
||||
</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:ex="clr-namespace:HandyControlDemo.Tools.Extension">
|
||||
<hc:TransitioningContentControl>
|
||||
<StackPanel Margin="32" VerticalAlignment="Center">
|
||||
<hc:ElementGroup Orientation="Horizontal">
|
||||
<hc:UniformSpacingPanel Margin="32" VerticalAlignment="Center" Orientation="Vertical" Spacing="16">
|
||||
<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">
|
||||
<Path Data="{StaticResource ClockGeometry}" Width="16" Height="16" Stretch="Uniform" Fill="{DynamicResource BorderBrush}"/>
|
||||
</Border>
|
||||
@@ -15,11 +27,20 @@
|
||||
<Button Content="{ex:Lang Key={x:Static langs:LangKeys.Button}}"/>
|
||||
<ToggleButton Content="{ex:Lang Key={x:Static langs:LangKeys.ToggleButton}}"/>
|
||||
</hc:ElementGroup>
|
||||
<hc:ElementGroup Margin="0,16,0,0">
|
||||
<TextBox/>
|
||||
<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}}"/>
|
||||
<hc:ElementGroup>
|
||||
<hc:ElementGroup.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<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>
|
||||
</StackPanel>
|
||||
</hc:UniformSpacingPanel>
|
||||
</hc:TransitioningContentControl>
|
||||
</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>
|
||||
</UserControl.Resources>
|
||||
<hc:TransitioningContentControl>
|
||||
<ScrollViewer>
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<hc:FlexPanel Margin="32" AlignItems="FlexStart" AlignContent="SpaceBetween" JustifyContent="SpaceAround" FlexWrap="WrapReverse" FlexDirection="RowReverse">
|
||||
<Border hc:FlexPanel.Order="99" Height="50" Style="{StaticResource Border4FlexPanelDemoStyle}">
|
||||
<TextBlock Text="0" Style="{StaticResource TextBlockTitle}"/>
|
||||
@@ -45,6 +45,6 @@
|
||||
<TextBlock Text="9" Style="{StaticResource TextBlockTitle}"/>
|
||||
</Border>
|
||||
</hc:FlexPanel>
|
||||
</ScrollViewer>
|
||||
</hc:ScrollViewer>
|
||||
</hc:TransitioningContentControl>
|
||||
</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}"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol">
|
||||
<hc:TransitioningContentControl>
|
||||
<hc:FlipClock Margin="32"/>
|
||||
<Viewbox MaxWidth="520">
|
||||
<hc:FlipClock Margin="32"/>
|
||||
</Viewbox>
|
||||
</hc:TransitioningContentControl>
|
||||
</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;
|
||||
|
||||
namespace HandyControlDemo.UserControl
|
||||
{
|
||||
public partial class GifImageDemoCtl : IDisposable
|
||||
{
|
||||
public GifImageDemoCtl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
namespace HandyControlDemo.UserControl;
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
GifImageMain.Dispose();
|
||||
}
|
||||
public partial class GifImageDemoCtl : IDisposable
|
||||
{
|
||||
public GifImageDemoCtl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
GifImageMain.Dispose();
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<hc:TransitioningContentControl>
|
||||
<hc:SimplePanel Width="500" Height="400">
|
||||
<hc:SimplePanel Height="400">
|
||||
<hc:ScrollViewer Name="ScrollViewerDemo" IsInertiaEnabled="True" Margin="0,10,0,0">
|
||||
<Border Height="2000" Margin="8,0">
|
||||
<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"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<hc:TransitioningContentControl>
|
||||
<StackPanel Margin="32" Orientation="Horizontal">
|
||||
<UniformGrid Rows="3" Columns="3" Width="240" Height="240">
|
||||
<hc:Gravatar Id="User1"/>
|
||||
<hc:Gravatar Id="User2"/>
|
||||
<hc:Gravatar Style="{StaticResource GravatarCircleImg}">
|
||||
<Image Source="/HandyControlDemo;component/Resources/Img/Album/2.jpg"/>
|
||||
</hc:Gravatar>
|
||||
<hc:Gravatar Id="User4"/>
|
||||
<hc:Gravatar Id="User5" Style="{StaticResource GravatarCircle}"/>
|
||||
<hc:Gravatar Id="User6"/>
|
||||
<hc:Gravatar Style="{StaticResource GravatarCircle}" Source="/HandyControlDemo;component/Resources/Img/Album/1.jpg"/>
|
||||
<hc:Gravatar Id="User8"/>
|
||||
<hc:Gravatar Id="User9"/>
|
||||
</UniformGrid>
|
||||
<StackPanel Margin="16,0,0,0" Height="220" VerticalAlignment="Center">
|
||||
<TextBox Text="User1" Name="TextBoxName" Width="180"/>
|
||||
<hc:Gravatar Height="180" Width="180" Id="{Binding Text,ElementName=TextBoxName}" Margin="10"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<hc:UniformSpacingPanel Margin="32" ChildWrapping="Wrap" Spacing="16" ItemHorizontalAlignment="Center">
|
||||
<UniformGrid Rows="3" Columns="3" Width="240" Height="240">
|
||||
<hc:Gravatar Id="User1"/>
|
||||
<hc:Gravatar Id="User2"/>
|
||||
<hc:Gravatar Style="{StaticResource GravatarCircleImg}">
|
||||
<Image Source="/HandyControlDemo;component/Resources/Img/Album/2.jpg"/>
|
||||
</hc:Gravatar>
|
||||
<hc:Gravatar Id="User4"/>
|
||||
<hc:Gravatar Id="User5" Style="{StaticResource GravatarCircle}"/>
|
||||
<hc:Gravatar Id="User6"/>
|
||||
<hc:Gravatar Style="{StaticResource GravatarCircle}" Source="/HandyControlDemo;component/Resources/Img/Album/1.jpg"/>
|
||||
<hc:Gravatar Id="User8"/>
|
||||
<hc:Gravatar Id="User9"/>
|
||||
</UniformGrid>
|
||||
<StackPanel Width="240" Height="220" VerticalAlignment="Center">
|
||||
<TextBox Text="User1" Name="TextBoxName" Width="180"/>
|
||||
<hc:Gravatar Height="180" Width="180" Id="{Binding Text,ElementName=TextBoxName}" Margin="10"/>
|
||||
</StackPanel>
|
||||
</hc:UniformSpacingPanel>
|
||||
</hc:ScrollViewer>
|
||||
</hc:TransitioningContentControl>
|
||||
</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:ex="clr-namespace:HandyControlDemo.Tools.Extension"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<ScrollViewer>
|
||||
<hc:ScrollViewer IsInertiaEnabled="True">
|
||||
<StackPanel Margin="32">
|
||||
<TextBlock Text="{ex:Lang Key={x:Static langs:LangKeys.BasicLayout}}" Style="{StaticResource TextBlockLargeBold}" HorizontalAlignment="Left"/>
|
||||
<hc:Row Margin="0,20,0,0">
|
||||
@@ -154,5 +154,5 @@
|
||||
</hc:Col>
|
||||
</hc:Row>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</hc:ScrollViewer>
|
||||
</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