Merge branch 'master' into patch-2

This commit is contained in:
NaBian authored and GitHub committed 2022-03-27 19:59:10 +08:00
commit f35a2647da
986 files changed
+63640 -61515

No files matched your search

-32
View File
@@ -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.
+96
View File
@@ -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
+7 -1
View File
@@ -7,6 +7,12 @@ jobs:
- name: checkout
uses: actions/checkout@master
- name: Setup .NET Core SDK
uses: actions/setup-dotnet@master
with:
dotnet-version: '6.0.x'
include-prerelease: true
- name: setup nuget.exe
uses: NuGet/setup-nuget@v1.0.5
@@ -15,7 +21,7 @@ jobs:
run: |
cd build
.\build.ps1
nuget pack build-for-myget.nuspec -version 3.3.0-beta.${env:GITHUB_RUN_NUMBER}
nuget pack build-for-myget.nuspec -version 3.4.0-beta.${env:GITHUB_RUN_NUMBER}
$nupkgName = @(gci *.nupkg)[0].Name
$mygetSourcePath = "https://www.myget.org/F/handycontrol"
nuget setApiKey ${{ secrets.MYGETTOKEN }} -Source $mygetSourcePath
+15 -12
View File
@@ -3,12 +3,12 @@
</p>
<p align="center">
<a href="https://github.com/HandyOrg/HandyControl/blob/master/README-cn.md">中文</a>
❤
<a href="https://github.com/HandyOrg/HandyControl/blob/master/README-cn.md">中文</a>
❤
<a href="https://github.com/HandyOrg/HandyControl/blob/master/README.md">English</a>
</p>
<p align="center">
<p align="center">
<img alt="dotnet-version" src="https://img.shields.io/badge/.net-%3E%3D4.0-blue.svg"></img>
<img alt="csharp-version" src="https://img.shields.io/badge/C%23-8.0-blue.svg"></img>
<img alt="IDE-version" src="https://img.shields.io/badge/IDE-vs2019-blue.svg"></img>
@@ -17,13 +17,13 @@
</a>
<a href="https://www.myget.org/feed/handycontrol/package/nuget/HandyControl">
<img alt="myget-version" src="https://img.shields.io/myget/handycontrol/v/handycontrol?color=orange&label=myget"></img>
</a>
</a>
<a href="https://github.com/HandyOrg/HandyControl/actions?query=workflow%3Abuild">
<img alt="Github-build-status" src="https://github.com/HandyOrg/HandyControl/workflows/build/badge.svg"></img>
</a>
<a href="https://www.nuget.org/packages/HandyControl">
<img alt="Nuget" src="https://img.shields.io/nuget/dt/handycontrol"></img>
</a>
</a>
</p>
## 特别声明
@@ -48,9 +48,9 @@ HandyControl 项目已加入 [dotNET China](https://gitee.com/dotnetchina) 组
### 赞助
* [以HandyControl的名义为慈善事业做贡献(请联系我们上赞助墙)](http://www.chinacharityfederation.org/ConfirmDonation/0.html?zhijie=3)
* [以HandyControl的名义为慈善事业做贡献(请联系我们上赞助墙)](http://www.chinacharityfederation.org/ConfirmDonation/0.html?zhijie=3)
* 为我们购买防脱洗发水 (支付宝扫码)
* 为我们购买防脱洗发水 (支付宝扫码)
![qrcode](https://gitee.com/handyorg/HandyOrgResource/raw/master/HandyControl/Resources/qrcode.png)
## 贡献者
@@ -85,6 +85,7 @@ HandyControl 项目已加入 [dotNET China](https://gitee.com/dotnetchina) 组
<a href="https://github.com/shaosu" target="_blank"><img style="border-radius:50%!important" width="64px" alt="shaosu" src="https://avatars.githubusercontent.com/u/12237247?s=64&v=4"></a>
<a href="https://github.com/imba-tjd" target="_blank"><img style="border-radius:50%!important" width="64px" alt="imba-tjd" src="https://avatars.githubusercontent.com/u/24759802?s=64&v=4"></a>
<a href="https://github.com/jhm-ciberman" target="_blank"><img style="border-radius:50%!important" width="64px" alt="jhm-ciberman" src="https://avatars.githubusercontent.com/u/7988351?s=64&v=4"></a>
<a href="https://github.com/musashi-miyamoto" target="_blank"><img style="border-radius:50%!important" width="64px" alt="musashi-miyamoto" src="https://avatars.githubusercontent.com/u/44890163?s=64&v=4"></a>
## 赞助者
@@ -93,8 +94,8 @@ HandyControl 项目已加入 [dotNET China](https://gitee.com/dotnetchina) 组
<a href="https://github.com/IUpdatable" target="_blank"><img style="border-radius:50%!important" width="64px" alt="IUpdatable" src="https://avatars.githubusercontent.com/u/51181716?s=64&v=4"></a>
<a href="https://github.com/maplewei" target="_blank"><img style="border-radius:50%!important" width="64px" alt="maplewei" src="https://avatars.githubusercontent.com/u/13778095?s=64&v=4"></a>
<a href="https://github.com/sunshang-hl" target="_blank"><img style="border-radius:50%!important" width="64px" alt="sunshang-hl" src="https://avatars.githubusercontent.com/u/34593206?s=64&v=4"></a>
<a href="https://github.com/yangkang326" target="_blank"><img style="border-radius:50%!important" width="64px" alt="yangkang326" src="https://avatars.githubusercontent.com/u/51224259?s=64&v=4"></a>
<a href="https://github.com/zmrbak" target="_blank"><img style="border-radius:50%!important" width="64px" alt="zmrbak" src="https://avatars.githubusercontent.com/u/7257543?s=64&v=4"></a>
<a href="https://github.com/yangkang326" target="_blank"><img style="border-radius:50%!important" width="64px" alt="yangkang326" src="https://avatars.githubusercontent.com/u/51224259?s=64&v=4"></a>
<a href="https://github.com/zmrbak" target="_blank"><img style="border-radius:50%!important" width="64px" alt="zmrbak" src="https://avatars.githubusercontent.com/u/7257543?s=64&v=4"></a>
<a href="https://github.com/AFei19911012" target="_blank"><img style="border-radius:50%!important" width="64px" alt="AFei19911012" src="https://avatars.githubusercontent.com/u/31465314?s=64&v=4"></a>
<a href="https://github.com/wayne2006" target="_blank"><img style="border-radius:50%!important" width="64px" alt="wayne2006" src="https://avatars.githubusercontent.com/u/21210915?s=64&v=4"></a>
<a href="https://github.com/towerDLH" target="_blank"><img style="border-radius:50%!important" width="64px" alt="towerDLH" src="https://avatars.githubusercontent.com/u/53053537?s=64&v=4"></a>
@@ -130,6 +131,8 @@ HandyControl 项目已加入 [dotNET China](https://gitee.com/dotnetchina) 组
<a href="https://github.com/icarousfff" target="_blank"><img style="border-radius:50%!important" width="64px" alt="icarousfff" src="https://avatars.githubusercontent.com/u/49859230?s=64&v=4"></a>
<a href="https://github.com/qiang9420d" target="_blank"><img style="border-radius:50%!important" width="64px" alt="qiang9420d" src="https://avatars.githubusercontent.com/u/22925262?s=64&v=4"></a>
<a href="https://github.com/zhongwcool" target="_blank"><img style="border-radius:50%!important" width="64px" alt="zhongwcool" src="https://avatars.githubusercontent.com/u/5747392?s=64&v=4"></a>
<a href="https://github.com/HenJigg" target="_blank"><img style="border-radius:50%!important" width="64px" alt="HenJigg" src="https://avatars.githubusercontent.com/u/42528522?s=64&v=4"></a>
<a href="https://github.com/MysticABC" target="_blank"><img style="border-radius:50%!important" width="64px" alt="MysticABC" src="https://avatars.githubusercontent.com/u/53632904?s=64&v=4"></a>
## 鸣谢
@@ -141,13 +144,13 @@ 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>
如果你的项目没有被列出,请告知我们! 😀
## 用法
Step 1: 添加 HandyControl 引用,或在 nuget 上搜索 HandyControl;
Step 1: 添加 HandyControl 引用,或在 nuget 上搜索 HandyControl;
```Install-Package HandyControl```
@@ -277,7 +280,7 @@ Step 4: 开始编码
### ImageBlock
![ImageBlock](https://gitee.com/handyorg/HandyOrgResource/raw/master/HandyControl/Resources/ImageBlock.gif)
![ImageBlock](https://gitee.com/handyorg/HandyOrgResource/raw/master/HandyControl/Resources/ImageBlock.gif)
![ImageBlock](https://gitee.com/handyorg/HandyOrgResource/raw/master/HandyControl/Resources/ImageBlock.png)
+15 -12
View File
@@ -3,8 +3,8 @@
</p>
<p align="center">
<a href="https://github.com/HandyOrg/HandyControl/blob/master/README-cn.md">中文</a>
❤
<a href="https://github.com/HandyOrg/HandyControl/blob/master/README-cn.md">中文</a>
❤
<a href="https://github.com/HandyOrg/HandyControl/blob/master/README.md">English</a>
</p>
@@ -14,16 +14,16 @@
<img alt="IDE-version" src="https://img.shields.io/badge/IDE-vs2019-blue.svg"></img>
<a href="https://www.nuget.org/packages/HandyControl">
<img alt="nuget-version" src="https://img.shields.io/nuget/v/HandyControl.svg"></img>
</a>
</a>
<a href="https://www.myget.org/feed/handycontrol/package/nuget/HandyControl">
<img alt="myget-version" src="https://img.shields.io/myget/handycontrol/v/handycontrol?color=orange&label=myget"></img>
</a>
</a>
<a href="https://github.com/HandyOrg/HandyControl/actions?query=workflow%3Abuild">
<img alt="Github-build-status" src="https://github.com/HandyOrg/HandyControl/workflows/build/badge.svg"></img>
</a>
<a href="https://www.nuget.org/packages/HandyControl">
<img alt="Nuget" src="https://img.shields.io/nuget/dt/handycontrol"></img>
</a>
</a>
</p>
## 面向中国
@@ -42,9 +42,9 @@
### 赞助
* [以HandyControl的名义为慈善事业做贡献(请联系我们上赞助墙)](http://www.chinacharityfederation.org/ConfirmDonation/0.html?zhijie=3)
* [以HandyControl的名义为慈善事业做贡献(请联系我们上赞助墙)](http://www.chinacharityfederation.org/ConfirmDonation/0.html?zhijie=3)
* 为我们购买防脱洗发水 (支付宝扫码)
* 为我们购买防脱洗发水 (支付宝扫码)
![qrcode](https://gitee.com/handyorg/HandyOrgResource/raw/master/HandyControl/Resources/qrcode.png)
## Contributors
@@ -79,6 +79,7 @@
<a href="https://github.com/shaosu" target="_blank"><img style="border-radius:50%!important" width="64px" alt="shaosu" src="https://avatars.githubusercontent.com/u/12237247?s=64&v=4"></a>
<a href="https://github.com/imba-tjd" target="_blank"><img style="border-radius:50%!important" width="64px" alt="imba-tjd" src="https://avatars.githubusercontent.com/u/24759802?s=64&v=4"></a>
<a href="https://github.com/jhm-ciberman" target="_blank"><img style="border-radius:50%!important" width="64px" alt="jhm-ciberman" src="https://avatars.githubusercontent.com/u/7988351?s=64&v=4"></a>
<a href="https://github.com/musashi-miyamoto" target="_blank"><img style="border-radius:50%!important" width="64px" alt="musashi-miyamoto" src="https://avatars.githubusercontent.com/u/44890163?s=64&v=4"></a>
## Backers
@@ -87,8 +88,8 @@
<a href="https://github.com/IUpdatable" target="_blank"><img style="border-radius:50%!important" width="64px" alt="IUpdatable" src="https://avatars.githubusercontent.com/u/51181716?s=64&v=4"></a>
<a href="https://github.com/maplewei" target="_blank"><img style="border-radius:50%!important" width="64px" alt="maplewei" src="https://avatars.githubusercontent.com/u/13778095?s=64&v=4"></a>
<a href="https://github.com/sunshang-hl" target="_blank"><img style="border-radius:50%!important" width="64px" alt="sunshang-hl" src="https://avatars.githubusercontent.com/u/34593206?s=64&v=4"></a>
<a href="https://github.com/yangkang326" target="_blank"><img style="border-radius:50%!important" width="64px" alt="yangkang326" src="https://avatars.githubusercontent.com/u/51224259?s=64&v=4"></a>
<a href="https://github.com/zmrbak" target="_blank"><img style="border-radius:50%!important" width="64px" alt="zmrbak" src="https://avatars.githubusercontent.com/u/7257543?s=64&v=4"></a>
<a href="https://github.com/yangkang326" target="_blank"><img style="border-radius:50%!important" width="64px" alt="yangkang326" src="https://avatars.githubusercontent.com/u/51224259?s=64&v=4"></a>
<a href="https://github.com/zmrbak" target="_blank"><img style="border-radius:50%!important" width="64px" alt="zmrbak" src="https://avatars.githubusercontent.com/u/7257543?s=64&v=4"></a>
<a href="https://github.com/AFei19911012" target="_blank"><img style="border-radius:50%!important" width="64px" alt="AFei19911012" src="https://avatars.githubusercontent.com/u/31465314?s=64&v=4"></a>
<a href="https://github.com/wayne2006" target="_blank"><img style="border-radius:50%!important" width="64px" alt="wayne2006" src="https://avatars.githubusercontent.com/u/21210915?s=64&v=4"></a>
<a href="https://github.com/towerDLH" target="_blank"><img style="border-radius:50%!important" width="64px" alt="towerDLH" src="https://avatars.githubusercontent.com/u/53053537?s=64&v=4"></a>
@@ -124,6 +125,8 @@
<a href="https://github.com/icarousfff" target="_blank"><img style="border-radius:50%!important" width="64px" alt="icarousfff" src="https://avatars.githubusercontent.com/u/49859230?s=64&v=4"></a>
<a href="https://github.com/qiang9420d" target="_blank"><img style="border-radius:50%!important" width="64px" alt="qiang9420d" src="https://avatars.githubusercontent.com/u/22925262?s=64&v=4"></a>
<a href="https://github.com/zhongwcool" target="_blank"><img style="border-radius:50%!important" width="64px" alt="zhongwcool" src="https://avatars.githubusercontent.com/u/5747392?s=64&v=4"></a>
<a href="https://github.com/HenJigg" target="_blank"><img style="border-radius:50%!important" width="64px" alt="HenJigg" src="https://avatars.githubusercontent.com/u/42528522?s=64&v=4"></a>
<a href="https://github.com/MysticABC" target="_blank"><img style="border-radius:50%!important" width="64px" alt="MysticABC" src="https://avatars.githubusercontent.com/u/53632904?s=64&v=4"></a>
## Special thanks to
@@ -135,13 +138,13 @@
<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! 😀
## Usage
Step 1: Add a reference to HandyControl or search for HandyControl on the nuget;
Step 1: Add a reference to HandyControl or search for HandyControl on the nuget;
```Install-Package HandyControl```
@@ -271,7 +274,7 @@ Step 4: Enjoy coding
### ImageBlock
![ImageBlock](https://raw.githubusercontent.com/HandyOrg/HandyOrgResource/master/HandyControl/Resources/ImageBlock.gif)
![ImageBlock](https://raw.githubusercontent.com/HandyOrg/HandyOrgResource/master/HandyControl/Resources/ImageBlock.gif)
![ImageBlock](https://raw.githubusercontent.com/HandyOrg/HandyOrgResource/master/HandyControl/Resources/ImageBlock.png)
+16 -1
View File
@@ -35,6 +35,7 @@
<file src="lib\net40\en\HandyControl.resources.dll" target="lib\net40\en\HandyControl.resources.dll" />
<file src="lib\net40\fa\HandyControl.resources.dll" target="lib\net40\fa\HandyControl.resources.dll" />
<file src="lib\net40\fr\HandyControl.resources.dll" target="lib\net40\fr\HandyControl.resources.dll" />
<file src="lib\net40\ja\HandyControl.resources.dll" target="lib\net40\ja\HandyControl.resources.dll" />
<file src="lib\net40\ko-KR\HandyControl.resources.dll" target="lib\net40\ko-KR\HandyControl.resources.dll" />
<file src="lib\net40\pl\HandyControl.resources.dll" target="lib\net40\pl\HandyControl.resources.dll" />
<file src="lib\net40\pt-BR\HandyControl.resources.dll" target="lib\net40\pt-BR\HandyControl.resources.dll" />
@@ -47,6 +48,7 @@
<file src="lib\net45\en\HandyControl.resources.dll" target="lib\net45\en\HandyControl.resources.dll" />
<file src="lib\net45\fa\HandyControl.resources.dll" target="lib\net45\fa\HandyControl.resources.dll" />
<file src="lib\net45\fr\HandyControl.resources.dll" target="lib\net45\fr\HandyControl.resources.dll" />
<file src="lib\net45\ja\HandyControl.resources.dll" target="lib\net45\ja\HandyControl.resources.dll" />
<file src="lib\net45\ko-KR\HandyControl.resources.dll" target="lib\net45\ko-KR\HandyControl.resources.dll" />
<file src="lib\net45\pl\HandyControl.resources.dll" target="lib\net45\pl\HandyControl.resources.dll" />
<file src="lib\net45\pt-BR\HandyControl.resources.dll" target="lib\net45\pt-BR\HandyControl.resources.dll" />
@@ -59,6 +61,7 @@
<file src="lib\net451\en\HandyControl.resources.dll" target="lib\net451\en\HandyControl.resources.dll" />
<file src="lib\net451\fa\HandyControl.resources.dll" target="lib\net451\fa\HandyControl.resources.dll" />
<file src="lib\net451\fr\HandyControl.resources.dll" target="lib\net451\fr\HandyControl.resources.dll" />
<file src="lib\net451\ja\HandyControl.resources.dll" target="lib\net451\ja\HandyControl.resources.dll" />
<file src="lib\net451\ko-KR\HandyControl.resources.dll" target="lib\net451\ko-KR\HandyControl.resources.dll" />
<file src="lib\net451\pl\HandyControl.resources.dll" target="lib\net451\pl\HandyControl.resources.dll" />
<file src="lib\net451\pt-BR\HandyControl.resources.dll" target="lib\net451\pt-BR\HandyControl.resources.dll" />
@@ -71,6 +74,7 @@
<file src="lib\net452\en\HandyControl.resources.dll" target="lib\net452\en\HandyControl.resources.dll" />
<file src="lib\net452\fa\HandyControl.resources.dll" target="lib\net452\fa\HandyControl.resources.dll" />
<file src="lib\net452\fr\HandyControl.resources.dll" target="lib\net452\fr\HandyControl.resources.dll" />
<file src="lib\net452\ja\HandyControl.resources.dll" target="lib\net452\ja\HandyControl.resources.dll" />
<file src="lib\net452\ko-KR\HandyControl.resources.dll" target="lib\net452\ko-KR\HandyControl.resources.dll" />
<file src="lib\net452\pl\HandyControl.resources.dll" target="lib\net452\pl\HandyControl.resources.dll" />
<file src="lib\net452\pt-BR\HandyControl.resources.dll" target="lib\net452\pt-BR\HandyControl.resources.dll" />
@@ -83,6 +87,7 @@
<file src="lib\net46\en\HandyControl.resources.dll" target="lib\net46\en\HandyControl.resources.dll" />
<file src="lib\net46\fa\HandyControl.resources.dll" target="lib\net46\fa\HandyControl.resources.dll" />
<file src="lib\net46\fr\HandyControl.resources.dll" target="lib\net46\fr\HandyControl.resources.dll" />
<file src="lib\net46\ja\HandyControl.resources.dll" target="lib\net46\ja\HandyControl.resources.dll" />
<file src="lib\net46\ko-KR\HandyControl.resources.dll" target="lib\net46\ko-KR\HandyControl.resources.dll" />
<file src="lib\net46\pl\HandyControl.resources.dll" target="lib\net46\pl\HandyControl.resources.dll" />
<file src="lib\net46\pt-BR\HandyControl.resources.dll" target="lib\net46\pt-BR\HandyControl.resources.dll" />
@@ -95,6 +100,7 @@
<file src="lib\net461\en\HandyControl.resources.dll" target="lib\net461\en\HandyControl.resources.dll" />
<file src="lib\net461\fa\HandyControl.resources.dll" target="lib\net461\fa\HandyControl.resources.dll" />
<file src="lib\net461\fr\HandyControl.resources.dll" target="lib\net461\fr\HandyControl.resources.dll" />
<file src="lib\net461\ja\HandyControl.resources.dll" target="lib\net461\ja\HandyControl.resources.dll" />
<file src="lib\net461\ko-KR\HandyControl.resources.dll" target="lib\net461\ko-KR\HandyControl.resources.dll" />
<file src="lib\net461\pl\HandyControl.resources.dll" target="lib\net461\pl\HandyControl.resources.dll" />
<file src="lib\net461\pt-BR\HandyControl.resources.dll" target="lib\net461\pt-BR\HandyControl.resources.dll" />
@@ -107,6 +113,7 @@
<file src="lib\net462\en\HandyControl.resources.dll" target="lib\net462\en\HandyControl.resources.dll" />
<file src="lib\net462\fa\HandyControl.resources.dll" target="lib\net462\fa\HandyControl.resources.dll" />
<file src="lib\net462\fr\HandyControl.resources.dll" target="lib\net462\fr\HandyControl.resources.dll" />
<file src="lib\net462\ja\HandyControl.resources.dll" target="lib\net462\ja\HandyControl.resources.dll" />
<file src="lib\net462\ko-KR\HandyControl.resources.dll" target="lib\net462\ko-KR\HandyControl.resources.dll" />
<file src="lib\net462\pl\HandyControl.resources.dll" target="lib\net462\pl\HandyControl.resources.dll" />
<file src="lib\net462\pt-BR\HandyControl.resources.dll" target="lib\net462\pt-BR\HandyControl.resources.dll" />
@@ -119,6 +126,7 @@
<file src="lib\net47\en\HandyControl.resources.dll" target="lib\net47\en\HandyControl.resources.dll" />
<file src="lib\net47\fa\HandyControl.resources.dll" target="lib\net47\fa\HandyControl.resources.dll" />
<file src="lib\net47\fr\HandyControl.resources.dll" target="lib\net47\fr\HandyControl.resources.dll" />
<file src="lib\net47\ja\HandyControl.resources.dll" target="lib\net47\ja\HandyControl.resources.dll" />
<file src="lib\net47\ko-KR\HandyControl.resources.dll" target="lib\net47\ko-KR\HandyControl.resources.dll" />
<file src="lib\net47\pl\HandyControl.resources.dll" target="lib\net47\pl\HandyControl.resources.dll" />
<file src="lib\net47\pt-BR\HandyControl.resources.dll" target="lib\net47\pt-BR\HandyControl.resources.dll" />
@@ -131,6 +139,7 @@
<file src="lib\net471\en\HandyControl.resources.dll" target="lib\net471\en\HandyControl.resources.dll" />
<file src="lib\net471\fa\HandyControl.resources.dll" target="lib\net471\fa\HandyControl.resources.dll" />
<file src="lib\net471\fr\HandyControl.resources.dll" target="lib\net471\fr\HandyControl.resources.dll" />
<file src="lib\net471\ja\HandyControl.resources.dll" target="lib\net471\ja\HandyControl.resources.dll" />
<file src="lib\net471\ko-KR\HandyControl.resources.dll" target="lib\net471\ko-KR\HandyControl.resources.dll" />
<file src="lib\net471\pl\HandyControl.resources.dll" target="lib\net471\pl\HandyControl.resources.dll" />
<file src="lib\net471\pt-BR\HandyControl.resources.dll" target="lib\net471\pt-BR\HandyControl.resources.dll" />
@@ -143,6 +152,7 @@
<file src="lib\net472\en\HandyControl.resources.dll" target="lib\net472\en\HandyControl.resources.dll" />
<file src="lib\net472\fa\HandyControl.resources.dll" target="lib\net472\fa\HandyControl.resources.dll" />
<file src="lib\net472\fr\HandyControl.resources.dll" target="lib\net472\fr\HandyControl.resources.dll" />
<file src="lib\net472\ja\HandyControl.resources.dll" target="lib\net472\ja\HandyControl.resources.dll" />
<file src="lib\net472\ko-KR\HandyControl.resources.dll" target="lib\net472\ko-KR\HandyControl.resources.dll" />
<file src="lib\net472\pl\HandyControl.resources.dll" target="lib\net472\pl\HandyControl.resources.dll" />
<file src="lib\net472\pt-BR\HandyControl.resources.dll" target="lib\net472\pt-BR\HandyControl.resources.dll" />
@@ -155,6 +165,7 @@
<file src="lib\net48\en\HandyControl.resources.dll" target="lib\net48\en\HandyControl.resources.dll" />
<file src="lib\net48\fa\HandyControl.resources.dll" target="lib\net48\fa\HandyControl.resources.dll" />
<file src="lib\net48\fr\HandyControl.resources.dll" target="lib\net48\fr\HandyControl.resources.dll" />
<file src="lib\net48\ja\HandyControl.resources.dll" target="lib\net48\ja\HandyControl.resources.dll" />
<file src="lib\net48\ko-KR\HandyControl.resources.dll" target="lib\net48\ko-KR\HandyControl.resources.dll" />
<file src="lib\net48\pl\HandyControl.resources.dll" target="lib\net48\pl\HandyControl.resources.dll" />
<file src="lib\net48\pt-BR\HandyControl.resources.dll" target="lib\net48\pt-BR\HandyControl.resources.dll" />
@@ -167,6 +178,7 @@
<file src="lib\net5.0\en\HandyControl.resources.dll" target="lib\net5.0\en\HandyControl.resources.dll" />
<file src="lib\net5.0\fa\HandyControl.resources.dll" target="lib\net5.0\fa\HandyControl.resources.dll" />
<file src="lib\net5.0\fr\HandyControl.resources.dll" target="lib\net5.0\fr\HandyControl.resources.dll" />
<file src="lib\net5.0\ja\HandyControl.resources.dll" target="lib\net5.0\ja\HandyControl.resources.dll" />
<file src="lib\net5.0\ko-KR\HandyControl.resources.dll" target="lib\net5.0\ko-KR\HandyControl.resources.dll" />
<file src="lib\net5.0\pl\HandyControl.resources.dll" target="lib\net5.0\pl\HandyControl.resources.dll" />
<file src="lib\net5.0\pt-BR\HandyControl.resources.dll" target="lib\net5.0\pt-BR\HandyControl.resources.dll" />
@@ -181,6 +193,7 @@
<file src="lib\net6.0\en\HandyControl.resources.dll" target="lib\net6.0\en\HandyControl.resources.dll" />
<file src="lib\net6.0\fa\HandyControl.resources.dll" target="lib\net6.0\fa\HandyControl.resources.dll" />
<file src="lib\net6.0\fr\HandyControl.resources.dll" target="lib\net6.0\fr\HandyControl.resources.dll" />
<file src="lib\net6.0\ja\HandyControl.resources.dll" target="lib\net6.0\ja\HandyControl.resources.dll" />
<file src="lib\net6.0\ko-KR\HandyControl.resources.dll" target="lib\net6.0\ko-KR\HandyControl.resources.dll" />
<file src="lib\net6.0\pl\HandyControl.resources.dll" target="lib\net6.0\pl\HandyControl.resources.dll" />
<file src="lib\net6.0\pt-BR\HandyControl.resources.dll" target="lib\net6.0\pt-BR\HandyControl.resources.dll" />
@@ -195,6 +208,7 @@
<file src="lib\netcoreapp3.0\en\HandyControl.resources.dll" target="lib\netcoreapp3.0\en\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.0\fa\HandyControl.resources.dll" target="lib\netcoreapp3.0\fa\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.0\fr\HandyControl.resources.dll" target="lib\netcoreapp3.0\fr\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.0\ja\HandyControl.resources.dll" target="lib\netcoreapp3.0\ja\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.0\ko-KR\HandyControl.resources.dll" target="lib\netcoreapp3.0\ko-KR\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.0\pl\HandyControl.resources.dll" target="lib\netcoreapp3.0\pl\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.0\pt-BR\HandyControl.resources.dll" target="lib\netcoreapp3.0\pt-BR\HandyControl.resources.dll" />
@@ -208,6 +222,7 @@
<file src="lib\netcoreapp3.1\en\HandyControl.resources.dll" target="lib\netcoreapp3.1\en\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.1\fa\HandyControl.resources.dll" target="lib\netcoreapp3.1\fa\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.1\fr\HandyControl.resources.dll" target="lib\netcoreapp3.1\fr\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.1\ja\HandyControl.resources.dll" target="lib\netcoreapp3.1\ja\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.1\ko-KR\HandyControl.resources.dll" target="lib\netcoreapp3.1\ko-KR\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.1\pl\HandyControl.resources.dll" target="lib\netcoreapp3.1\pl\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.1\pt-BR\HandyControl.resources.dll" target="lib\netcoreapp3.1\pt-BR\HandyControl.resources.dll" />
@@ -218,4 +233,4 @@
<file src="lib\netcoreapp3.1\HandyControl.pdb" target="lib\netcoreapp3.1\HandyControl.pdb" />
<file src="lib\netcoreapp3.1\HandyControl.xml" target="lib\netcoreapp3.1\HandyControl.xml" />
</files>
</package>
</package>
+55
View File
@@ -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>
+55
View File
@@ -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.ja</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\ja\HandyControl.resources.dll" target="lib\net40\ja\HandyControl.resources.dll" />
<file src="lib\net45\ja\HandyControl.resources.dll" target="lib\net45\ja\HandyControl.resources.dll" />
<file src="lib\net451\ja\HandyControl.resources.dll" target="lib\net451\ja\HandyControl.resources.dll" />
<file src="lib\net452\ja\HandyControl.resources.dll" target="lib\net452\ja\HandyControl.resources.dll" />
<file src="lib\net46\ja\HandyControl.resources.dll" target="lib\net46\ja\HandyControl.resources.dll" />
<file src="lib\net461\ja\HandyControl.resources.dll" target="lib\net461\ja\HandyControl.resources.dll" />
<file src="lib\net462\ja\HandyControl.resources.dll" target="lib\net462\ja\HandyControl.resources.dll" />
<file src="lib\net47\ja\HandyControl.resources.dll" target="lib\net47\ja\HandyControl.resources.dll" />
<file src="lib\net471\ja\HandyControl.resources.dll" target="lib\net471\ja\HandyControl.resources.dll" />
<file src="lib\net472\ja\HandyControl.resources.dll" target="lib\net472\ja\HandyControl.resources.dll" />
<file src="lib\net48\ja\HandyControl.resources.dll" target="lib\net48\ja\HandyControl.resources.dll" />
<file src="lib\net5.0\ja\HandyControl.resources.dll" target="lib\net5.0\ja\HandyControl.resources.dll" />
<file src="lib\net6.0\ja\HandyControl.resources.dll" target="lib\net6.0\ja\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.0\ja\HandyControl.resources.dll" target="lib\netcoreapp3.0\ja\HandyControl.resources.dll" />
<file src="lib\netcoreapp3.1\ja\HandyControl.resources.dll" target="lib\netcoreapp3.1\ja\HandyControl.resources.dll" />
<file src="icon.png" target="icon.png" />
<file src="LICENSE" target="LICENSE" />
</files>
</package>
+1 -1
View File
@@ -42,7 +42,7 @@ Task("Build")
{
Configuration = "Release",
Framework = framework,
OutputDirectory = $"lib/{framework}"
OutputDirectory = $"lib/{framework.Split('-')[0]}"
};
DotNetCoreBuild("../src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj", settings);
+10 -10
View File
@@ -67,16 +67,16 @@
<file src="lib\net48\HandyControl.dll" target="lib\net48\HandyControl.dll" />
<file src="lib\net48\HandyControl.pdb" target="lib\net48\HandyControl.pdb" />
<file src="lib\net48\HandyControl.xml" target="lib\net48\HandyControl.xml" />
<file src="lib\net5.0-windows\ref\HandyControl.dll" target="lib\net5.0-windows\ref\HandyControl.dll" />
<file src="lib\net5.0-windows\HandyControl.deps.json" target="lib\net5.0-windows\HandyControl.deps.json" />
<file src="lib\net5.0-windows\HandyControl.dll" target="lib\net5.0-windows\HandyControl.dll" />
<file src="lib\net5.0-windows\HandyControl.pdb" target="lib\net5.0-windows\HandyControl.pdb" />
<file src="lib\net5.0-windows\HandyControl.xml" target="lib\net5.0-windows\HandyControl.xml" />
<file src="lib\net6.0-windows\ref\HandyControl.dll" target="lib\net6.0-windows\ref\HandyControl.dll" />
<file src="lib\net6.0-windows\HandyControl.deps.json" target="lib\net6.0-windows\HandyControl.deps.json" />
<file src="lib\net6.0-windows\HandyControl.dll" target="lib\net6.0-windows\HandyControl.dll" />
<file src="lib\net6.0-windows\HandyControl.pdb" target="lib\net6.0-windows\HandyControl.pdb" />
<file src="lib\net6.0-windows\HandyControl.xml" target="lib\net6.0-windows\HandyControl.xml" />
<file src="lib\net5.0\ref\HandyControl.dll" target="lib\net5.0\ref\HandyControl.dll" />
<file src="lib\net5.0\HandyControl.deps.json" target="lib\net5.0\HandyControl.deps.json" />
<file src="lib\net5.0\HandyControl.dll" target="lib\net5.0\HandyControl.dll" />
<file src="lib\net5.0\HandyControl.pdb" target="lib\net5.0\HandyControl.pdb" />
<file src="lib\net5.0\HandyControl.xml" target="lib\net5.0\HandyControl.xml" />
<file src="lib\net6.0\ref\HandyControl.dll" target="lib\net6.0\ref\HandyControl.dll" />
<file src="lib\net6.0\HandyControl.deps.json" target="lib\net6.0\HandyControl.deps.json" />
<file src="lib\net6.0\HandyControl.dll" target="lib\net6.0\HandyControl.dll" />
<file src="lib\net6.0\HandyControl.pdb" target="lib\net6.0\HandyControl.pdb" />
<file src="lib\net6.0\HandyControl.xml" target="lib\net6.0\HandyControl.xml" />
<file src="lib\netcoreapp3.0\HandyControl.deps.json" target="lib\netcoreapp3.0\HandyControl.deps.json" />
<file src="lib\netcoreapp3.0\HandyControl.dll" target="lib\netcoreapp3.0\HandyControl.dll" />
<file src="lib\netcoreapp3.0\HandyControl.pdb" target="lib\netcoreapp3.0\HandyControl.pdb" />
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.352
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControl_VS2019", "HandyControl_VS2019\HandyControl_VS2019.csproj", "{3F0F7B9E-C150-4FAA-9274-4F6F0A96B8CA}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControl_VS_Templates", "HandyControl_VS_Templates\HandyControl_VS_Templates.csproj", "{3F0F7B9E-C150-4FAA-9274-4F6F0A96B8CA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfApp", "WpfApp\WpfApp.csproj", "{83C70EB1-3A3F-4812-B86C-C7D1936699EB}"
EndProject
@@ -13,8 +13,8 @@
<ProjectGuid>{3F0F7B9E-C150-4FAA-9274-4F6F0A96B8CA}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>HandyControl_VS2019</RootNamespace>
<AssemblyName>HandyControl_VS2019</AssemblyName>
<RootNamespace>HandyControl_VS_Templates</RootNamespace>
<AssemblyName>HandyControl VS Templates</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<GeneratePkgDefFile>false</GeneratePkgDefFile>
<UseCodebase>true</UseCodebase>
@@ -56,10 +56,10 @@
<Reference Include="System" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.SDK" Version="16.0.206" ExcludeAssets="runtime">
<PackageReference Include="Microsoft.VisualStudio.SDK" Version="17.0.31902.203" ExcludeAssets="runtime">
<IncludeAssets>compile; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="16.8.3038">
<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="17.0.5232">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
@@ -1,14 +1,14 @@
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("HandyControl_VS2019")]
[assembly: AssemblyTitle("HandyControl VS Templates")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HandyControl_VS2019")]
[assembly: AssemblyProduct("HandyControl VS Templates")]
[assembly: AssemblyCopyright("Copyright © HandyOrg 2018-2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: AssemblyVersion("3.1.0")]
[assembly: AssemblyFileVersion("3.1.0")]
[assembly: AssemblyVersion("3.3.0")]
[assembly: AssemblyFileVersion("3.3.0")]
File renamed without changes.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

@@ -1,8 +1,8 @@
<?xml version="1.0" ?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Id="1B6729DF-3360-48C4-86A9-68A0591FBBEB" Version="3.1.0" Language="en-US" Publisher="HandyOrg" />
<DisplayName>HandyControl for VS2019</DisplayName>
<Identity Id="1B6729DF-3360-48C4-86A9-68A0591FBBEB" Version="3.3.0" Language="en-US" Publisher="HandyOrg" />
<DisplayName>HandyControl VS Templates</DisplayName>
<Description xml:space="preserve">This VSIX Project will help people initialize a HandyControl project.</Description>
<MoreInfo>https://handyorg.github.io/handycontrol</MoreInfo>
<License>License.txt</License>
@@ -13,15 +13,21 @@
<Tags>WPF C# Control</Tags>
</Metadata>
<Installation>
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[16.0, 17.0)" />
<InstallationTarget Id="Microsoft.VisualStudio.Enterprise" Version="[16.0, 17.0)" />
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[16.0, 17.0)" />
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[16.0, 18.0)">
<ProductArchitecture>x86</ProductArchitecture>
</InstallationTarget>
<InstallationTarget Id="Microsoft.VisualStudio.Enterprise" Version="[16.0, 18.0)">
<ProductArchitecture>x86</ProductArchitecture>
</InstallationTarget>
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[16.0, 18.0)">
<ProductArchitecture>x86</ProductArchitecture>
</InstallationTarget>
</Installation>
<Dependencies>
<Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="[4.0,)" />
</Dependencies>
<Prerequisites>
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[16.0,17.0)" DisplayName="Visual Studio core editor" />
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[16.0, 18.0)" DisplayName="Visual Studio core editor" />
</Prerequisites>
<Assets>
<Asset Type="Microsoft.VisualStudio.ProjectTemplate" d:Source="Project" d:ProjectName="WpfApp" d:TargetPath="|WpfApp;TemplateProjectOutputGroup|" Path="ProjectTemplates" d:VsixSubPath="ProjectTemplates" />
File renamed without changes.
@@ -33,7 +33,7 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="HandyControl" Version="3.1" />
<PackageReference Include="HandyControl" Version="3.3" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
@@ -1,14 +1,14 @@
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("HandyControl_VS2019_WpfCoreApp")]
[assembly: AssemblyTitle("HandyControl VS Templates WpfApp")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HandyControl_VS2019_WpfCoreApp")]
[assembly: AssemblyProduct("HandyControl VS Templates WpfApp")]
[assembly: AssemblyCopyright("Copyright © HandyOrg 2018-2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: AssemblyVersion("3.1.0")]
[assembly: AssemblyFileVersion("3.1.0")]
[assembly: AssemblyVersion("3.3.0")]
[assembly: AssemblyFileVersion("3.3.0")]
File renamed without changes.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

@@ -11,7 +11,7 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="HandyControl" Version="3.1" />
<PackageReference Include="HandyControl" Version="3.3" />
</ItemGroup>
</Project>
@@ -1,14 +1,14 @@
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("HandyControl_VS2019_WpfApp")]
[assembly: AssemblyTitle("HandyControl VS Templates WpfCoreApp")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HandyControl_VS2019_WpfApp")]
[assembly: AssemblyProduct("HandyControl VS Templates WpfCoreApp")]
[assembly: AssemblyCopyright("Copyright © HandyOrg 2018-2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: AssemblyVersion("3.1.0")]
[assembly: AssemblyFileVersion("3.1.0")]
[assembly: AssemblyVersion("3.3.0")]
[assembly: AssemblyFileVersion("3.3.0")]
File renamed without changes.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

+20 -2
View File
@@ -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}
@@ -180,6 +180,9 @@
<Resource Include="..\..\Shared\HandyControlDemo_Shared\Resources\Img\Flag\fr.png">
<Link>Resources\Img\Flag\fr.png</Link>
</Resource>
<Resource Include="..\..\Shared\HandyControlDemo_Shared\Resources\Img\Flag\ja.png">
<Link>Resources\Img\Flag\ja.png</Link>
</Resource>
<Resource Include="..\..\Shared\HandyControlDemo_Shared\Resources\Img\Flag\ko-KR.png">
<Link>Resources\Img\Flag\ko-KR.png</Link>
</Resource>
@@ -533,6 +536,9 @@
<EmbeddedResource Include="..\..\Shared\HandyControlDemo_Shared\Properties\Langs\Lang.fr.resx">
<Link>Properties\Langs\Lang.fr.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\..\Shared\HandyControlDemo_Shared\Properties\Langs\Lang.ja.resx">
<Link>Properties\Langs\Lang.ja.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\..\Shared\HandyControlDemo_Shared\Properties\Langs\Lang.ko-KR.resx">
<Link>Properties\Langs\Lang.ko-KR.resx</Link>
</EmbeddedResource>
@@ -581,6 +587,7 @@
rd /s /q Langs\es
rd /s /q Langs\fa
rd /s /q Langs\fr
rd /s /q Langs\ja
rd /s /q Langs\ko-KR
rd /s /q Langs\pt-BR
rd /s /q Langs\pl
@@ -591,6 +598,7 @@
move es Langs
move fa Langs
move fr Langs
move ja Langs
move ko-KR Langs
move pt-BR Langs
move pl Langs
@@ -50,6 +50,9 @@
<EmbeddedResource Include="..\..\Shared\HandyControl_Shared\Properties\Langs\Lang.fr.resx">
<Link>Properties\Langs\Lang.fr.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\..\Shared\HandyControl_Shared\Properties\Langs\Lang.ja.resx">
<Link>Properties\Langs\Lang.ja.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\..\Shared\HandyControl_Shared\Properties\Langs\Lang.ko-KR.resx">
<Link>Properties\Langs\Lang.ko-KR.resx</Link>
</EmbeddedResource>
@@ -80,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>
@@ -47,7 +47,7 @@
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<Border Grid.ColumnSpan="2" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"/>
<Path Grid.Column="1" x:Name="arrow" Data="{StaticResource DownGeometry}" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" HorizontalAlignment="Center" Margin="7" VerticalAlignment="Center"/>
<Path Grid.Column="1" x:Name="arrow" Data="{StaticResource DownGeometry}" Stretch="Uniform" Fill="{TemplateBinding BorderBrush}" HorizontalAlignment="Center" Width="16" VerticalAlignment="Center"/>
<Border Margin="1" Grid.Column="0" Visibility="{Binding Text,RelativeSource={RelativeSource AncestorType=ComboBox},Converter={StaticResource String2VisibilityReConverter}}">
<ContentPresenter Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
@@ -200,7 +200,7 @@
<ColumnDefinition/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="0,7,6,7">
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheLeft),RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}"/>
<TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}"/>
</DockPanel>
@@ -411,7 +411,7 @@
<ColumnDefinition/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="0,7,6,7">
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheLeft),RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}"/>
<TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}"/>
</DockPanel>
@@ -524,6 +524,7 @@
<Setter Property="ScrollViewer.PanningMode" Value="Both"/>
<Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
<Setter Property="Padding" Value="{StaticResource DefaultInputPadding}"/>
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,8,6,8"/>
<Setter Property="Template" Value="{StaticResource ComboBoxTemplate}"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
@@ -611,7 +612,7 @@
<Border Grid.Row="1" Grid.Column="0" Margin="1,0">
<ContentPresenter Margin="{TemplateBinding Padding}" x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<Button Grid.Row="1" Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Grid.Column="1" Style="{StaticResource ButtonIcon}" Padding="0,6" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Grid.Row="1" Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Grid.Column="1" Style="{StaticResource ButtonIcon}" Padding="0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="HasItems" Value="false">
@@ -691,7 +692,7 @@
<ColumnDefinition/>
<ColumnDefinition Width="Auto" MinWidth="30"/>
</Grid.ColumnDefinitions>
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="0,7,6,7">
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheLeft),RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}"/>
<TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}"/>
</DockPanel>
@@ -716,7 +717,7 @@
<Border Grid.Column="1" Margin="1,0">
<ContentPresenter Margin="{TemplateBinding Padding}" x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<Button Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Grid.Column="2" Style="{StaticResource ButtonIcon}" Padding="0,6" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Grid.Column="2" Style="{StaticResource ButtonIcon}" Padding="0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="HasItems" Value="false">
@@ -824,7 +825,7 @@
<Border Grid.Row="1" Grid.Column="0" x:Name="border" Margin="-1,1">
<TextBox x:Name="PART_EditableTextBox" Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<Button Grid.Column="1" Grid.Row="1" Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Style="{StaticResource ButtonIcon}" Padding="0,6" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Grid.Column="1" Grid.Row="1" Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Style="{StaticResource ButtonIcon}" Padding="0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="HasItems" Value="false">
@@ -965,7 +966,7 @@
<Border Grid.Row="1" Grid.Column="0" x:Name="border" Margin="-1,1">
<TextBox x:Name="PART_EditableTextBox" Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<Button Grid.Column="1" Grid.Row="1" Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Style="{StaticResource ButtonIcon}" Padding="0,6" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Grid.Column="1" Grid.Row="1" Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Style="{StaticResource ButtonIcon}" Padding="0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="HasItems" Value="false">
@@ -1068,7 +1069,7 @@
<ColumnDefinition/>
<ColumnDefinition Width="Auto" MinWidth="30"/>
</Grid.ColumnDefinitions>
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="0,7,6,7">
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheLeft),RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}"/>
<TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}"/>
</DockPanel>
@@ -1093,7 +1094,7 @@
<Border Grid.Column="1" x:Name="border" Background="Transparent" Margin="-1,1">
<TextBox x:Name="PART_EditableTextBox" Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<Button Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Grid.Column="2" Style="{StaticResource ButtonIcon}" Padding="0,6" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Grid.Column="2" Style="{StaticResource ButtonIcon}" Padding="0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="HasItems" Value="false">
@@ -1190,7 +1191,7 @@
<ColumnDefinition/>
<ColumnDefinition Width="Auto" MinWidth="30"/>
</Grid.ColumnDefinitions>
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="0,7,6,7">
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="{Binding Path=(hc:TitleElement.VerticalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{Binding Path=(hc:TitleElement.MarginOnTheLeft),RelativeSource={RelativeSource TemplatedParent}}">
<ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}"/>
<TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}"/>
</DockPanel>
@@ -1231,7 +1232,7 @@
<Border Grid.Column="1" x:Name="border" Background="Transparent" Margin="-1,1">
<TextBox x:Name="PART_EditableTextBox" Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxEditableTextBox}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<Button Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Grid.Column="2" Style="{StaticResource ButtonIcon}" Padding="0,6" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Command="interactivity:ControlCommands.Clear" Margin="0,0,26,0" Visibility="Collapsed" Name="ButtonClear" Width="16" Grid.Column="2" Style="{StaticResource ButtonIcon}" Padding="0" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="HasItems" Value="false">
@@ -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
@@ -182,6 +182,9 @@
<Resource Include="..\..\Shared\HandyControlDemo_Shared\Resources\Img\Flag\fr.png">
<Link>Resources\Img\Flag\fr.png</Link>
</Resource>
<Resource Include="..\..\Shared\HandyControlDemo_Shared\Resources\Img\Flag\ja.png">
<Link>Resources\Img\Flag\ja.png</Link>
</Resource>
<Resource Include="..\..\Shared\HandyControlDemo_Shared\Resources\Img\Flag\ko-KR.png">
<Link>Resources\Img\Flag\ko-KR.png</Link>
</Resource>
@@ -535,6 +538,9 @@
<EmbeddedResource Include="..\..\Shared\HandyControlDemo_Shared\Properties\Langs\Lang.fr.resx">
<Link>Properties\Langs\Lang.fr.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\..\Shared\HandyControlDemo_Shared\Properties\Langs\Lang.ja.resx">
<Link>Properties\Langs\Lang.ja.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\..\Shared\HandyControlDemo_Shared\Properties\Langs\Lang.ko-KR.resx">
<Link>Properties\Langs\Lang.ko-KR.resx</Link>
</EmbeddedResource>
@@ -583,6 +589,7 @@
rd /s /q Langs\es
rd /s /q Langs\fa
rd /s /q Langs\fr
rd /s /q Langs\ja
rd /s /q Langs\ko-KR
rd /s /q Langs\pt-BR
rd /s /q Langs\pl
@@ -593,6 +600,7 @@
move es Langs
move fa Langs
move fr Langs
move ja Langs
move ko-KR Langs
move pt-BR Langs
move pl Langs
@@ -51,6 +51,9 @@
<EmbeddedResource Include="..\..\Shared\HandyControl_Shared\Properties\Langs\Lang.fr.resx">
<Link>Properties\Langs\Lang.fr.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\..\Shared\HandyControl_Shared\Properties\Langs\Lang.ja.resx">
<Link>Properties\Langs\Lang.ja.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\..\Shared\HandyControl_Shared\Properties\Langs\Lang.ko-KR.resx">
<Link>Properties\Langs\Lang.ko-KR.resx</Link>
</EmbeddedResource>
@@ -80,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>
+90 -91
View File
@@ -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);
}
}
}
@@ -0,0 +1,804 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Controls" xml:space="preserve">
<value>コントロール</value>
</data>
<data name="Styles" xml:space="preserve">
<value>スタイル</value>
</data>
<data name="Growl" xml:space="preserve">
<value>Growl</value>
</data>
<data name="GrowlInfo" xml:space="preserve">
<value>It's a nice day today~~~</value>
</data>
<data name="GrowlSuccess" xml:space="preserve">
<value>File saved successfully!</value>
</data>
<data name="GrowlWarning" xml:space="preserve">
<value>Disk space is running out!</value>
</data>
<data name="GrowlError" xml:space="preserve">
<value>接続できません。ネットワーク接続を確認してください!</value>
</data>
<data name="GrowlFatal" xml:space="preserve">
<value>The program has crashed~~~</value>
</data>
<data name="GrowlAsk" xml:space="preserve">
<value>新しいバージョンがあります!アップデートしますか?</value>
</data>
<data name="Loading" xml:space="preserve">
<value>Loading</value>
</data>
<data name="ImageBrowser" xml:space="preserve">
<value>ImageBrowser</value>
</data>
<data name="ColorPicker" xml:space="preserve">
<value>ColorPicker</value>
</data>
<data name="Carousel" xml:space="preserve">
<value>Carousel</value>
</data>
<data name="CompareSlider" xml:space="preserve">
<value>CompareSlider</value>
</data>
<data name="TimeBar" xml:space="preserve">
<value>TimeBar</value>
</data>
<data name="Expander" xml:space="preserve">
<value>Expander</value>
</data>
<data name="Pagination" xml:space="preserve">
<value>Pagination</value>
</data>
<data name="OpenImageBrowser" xml:space="preserve">
<value>画像ブラウザを開く</value>
</data>
<data name="ProgressBar" xml:space="preserve">
<value>ProgressBar</value>
</data>
<data name="AnimationPath" xml:space="preserve">
<value>AnimationPath</value>
</data>
<data name="Button" xml:space="preserve">
<value>Button</value>
</data>
<data name="ToggleButton" xml:space="preserve">
<value>ToggleButton</value>
</data>
<data name="TabControl" xml:space="preserve">
<value>TabControl</value>
</data>
<data name="CheckBox" xml:space="preserve">
<value>CheckBox</value>
</data>
<data name="TextBlock" xml:space="preserve">
<value>TextBlock</value>
</data>
<data name="Default" xml:space="preserve">
<value>Default</value>
</data>
<data name="Primary" xml:space="preserve">
<value>Primary</value>
</data>
<data name="Success" xml:space="preserve">
<value>Success</value>
</data>
<data name="Info" xml:space="preserve">
<value>Info</value>
</data>
<data name="Warning" xml:space="preserve">
<value>Warning</value>
</data>
<data name="Danger" xml:space="preserve">
<value>Danger</value>
</data>
<data name="ButtonCustom" xml:space="preserve">
<value>Custom button</value>
</data>
<data name="Title" xml:space="preserve">
<value>タイトル</value>
</data>
<data name="StepBar" xml:space="preserve">
<value>StepBar</value>
</data>
<data name="Prev" xml:space="preserve">
<value>Prev</value>
</data>
<data name="Next" xml:space="preserve">
<value>Next</value>
</data>
<data name="Register" xml:space="preserve">
<value>Register</value>
</data>
<data name="BasicInfo" xml:space="preserve">
<value>Fill in the basic information</value>
</data>
<data name="UploadFile" xml:space="preserve">
<value>Upload file</value>
</data>
<data name="Complete" xml:space="preserve">
<value>Complete</value>
</data>
<data name="Clock" xml:space="preserve">
<value>Clock</value>
</data>
<data name="Calendar" xml:space="preserve">
<value>Calendar</value>
</data>
<data name="DatePicker" xml:space="preserve">
<value>DatePicker</value>
</data>
<data name="TimePicker" xml:space="preserve">
<value>TimePicker</value>
</data>
<data name="TextBox" xml:space="preserve">
<value>TextBox</value>
</data>
<data name="ContentDemoStr" xml:space="preserve">
<value>ここはコンテンツ</value>
</data>
<data name="TitleDemoStr1" xml:space="preserve">
<value>ここはタイトル</value>
</data>
<data name="TitleDemoStr2" xml:space="preserve">
<value>ここは入力必須</value>
</data>
<data name="PlsEnterContent" xml:space="preserve">
<value>内容を入力</value>
</data>
<data name="TitleDemoStr3" xml:space="preserve">
<value>左寄せタイトル</value>
</data>
<data name="Text" xml:space="preserve">
<value>テキスト</value>
</data>
<data name="SubTitle" xml:space="preserve">
<value>サブタイトル</value>
</data>
<data name="PasswordBox" xml:space="preserve">
<value>PasswordBox</value>
</data>
<data name="CirclePanel" xml:space="preserve">
<value>CirclePanel</value>
</data>
<data name="ComboBox" xml:space="preserve">
<value>ComboBox</value>
</data>
<data name="NumericUpDown" xml:space="preserve">
<value>NumericUpDown</value>
</data>
<data name="DataGrid" xml:space="preserve">
<value>DataGrid</value>
</data>
<data name="Index" xml:space="preserve">
<value>インデックス</value>
</data>
<data name="Name" xml:space="preserve">
<value>名前</value>
</data>
<data name="Type" xml:space="preserve">
<value>種類</value>
</data>
<data name="Remark" xml:space="preserve">
<value>注記</value>
</data>
<data name="Selected" xml:space="preserve">
<value>選択</value>
</data>
<data name="ListBox" xml:space="preserve">
<value>ListBox</value>
</data>
<data name="TreeView" xml:space="preserve">
<value>TreeView</value>
</data>
<data name="ScrollViewer" xml:space="preserve">
<value>ScrollViewer</value>
</data>
<data name="Window" xml:space="preserve">
<value>Window</value>
</data>
<data name="Menu" xml:space="preserve">
<value>Menu</value>
</data>
<data name="RightClickHere" xml:space="preserve">
<value>ここを右クリック</value>
</data>
<data name="RadioButton" xml:space="preserve">
<value>RadioButton</value>
</data>
<data name="OpenMessageWindow" xml:space="preserve">
<value>メッセージウインドウを開く</value>
</data>
<data name="OpenCommonWindow" xml:space="preserve">
<value>通常のウインドウを開く</value>
</data>
<data name="OpenCustomNonClientAreaWindow" xml:space="preserve">
<value>カスタム非クライアント領域ウインドウを開く</value>
</data>
<data name="OpenMouseFollowWindow" xml:space="preserve">
<value>マウス位置にウインドウを開く</value>
</data>
<data name="OpenCustomContentWindow" xml:space="preserve">
<value>カスタムコンテンツウインドウを開く</value>
</data>
<data name="Ignore" xml:space="preserve">
<value>Ignore</value>
</data>
<data name="Error" xml:space="preserve">
<value>Error</value>
</data>
<data name="Ask" xml:space="preserve">
<value>Ask</value>
</data>
<data name="Fatal" xml:space="preserve">
<value>Fatal</value>
</data>
<data name="Clear" xml:space="preserve">
<value>Clear</value>
</data>
<data name="ChangeLangAsk" xml:space="preserve">
<value>Whether to restart to change the language?</value>
</data>
<data name="About" xml:space="preserve">
<value>情報</value>
</data>
<data name="Repository" xml:space="preserve">
<value>リポジトリ</value>
</data>
<data name="Email" xml:space="preserve">
<value>Eメール</value>
</data>
<data name="Chatroom" xml:space="preserve">
<value>チャットルーム</value>
</data>
<data name="Blog" xml:space="preserve">
<value>ブログ</value>
</data>
<data name="Brush" xml:space="preserve">
<value>Brush</value>
</data>
<data name="PreviewSlider" xml:space="preserve">
<value>PreviewSlider</value>
</data>
<data name="Contributors" xml:space="preserve">
<value>貢献者</value>
</data>
<data name="Slider" xml:space="preserve">
<value>Slider</value>
</data>
<data name="IsNotPhone" xml:space="preserve">
<value>It's not a phone number</value>
</data>
<data name="PlsEnterEmail" xml:space="preserve">
<value>Eメールアドレスを入力</value>
</data>
<data name="Step" xml:space="preserve">
<value>Step</value>
</data>
<data name="CalendarWithClock" xml:space="preserve">
<value>CalendarWithClock</value>
</data>
<data name="DateTimePicker" xml:space="preserve">
<value>DateTimePicker</value>
</data>
<data name="GroupBox" xml:space="preserve">
<value>GroupBox</value>
</data>
<data name="ListView" xml:space="preserve">
<value>ListView</value>
</data>
<data name="RichTextBox" xml:space="preserve">
<value>RichTextBox</value>
</data>
<data name="ToolBar" xml:space="preserve">
<value>ToolBar</value>
</data>
<data name="Common" xml:space="preserve">
<value>通常</value>
</data>
<data name="ShowRowNumber" xml:space="preserve">
<value>行番号表示</value>
</data>
<data name="SearchBar" xml:space="preserve">
<value>SearchBar</value>
</data>
<data name="Tag" xml:space="preserve">
<value>Tag</value>
</data>
<data name="GifImage" xml:space="preserve">
<value>GifImage</value>
</data>
<data name="OutlineText" xml:space="preserve">
<value>OutlineText</value>
</data>
<data name="QQGroup" xml:space="preserve">
<value>QQ Group</value>
</data>
<data name="FlipClock" xml:space="preserve">
<value>FlipClock</value>
</data>
<data name="OpenBlurWindow" xml:space="preserve">
<value>BlurWindowを開く</value>
</data>
<data name="Rate" xml:space="preserve">
<value>Rate</value>
</data>
<data name="Shield" xml:space="preserve">
<value>Shield</value>
</data>
<data name="WaterfallPanel" xml:space="preserve">
<value>WaterfallPanel</value>
</data>
<data name="Groups" xml:space="preserve">
<value>Groups</value>
</data>
<data name="CoverView" xml:space="preserve">
<value>CoverView</value>
</data>
<data name="CoverFlow" xml:space="preserve">
<value>CoverFlow</value>
</data>
<data name="PlsEnterKey" xml:space="preserve">
<value>検索ワードを入力</value>
</data>
<data name="OpenNoNonClientAreaDragableWindow" xml:space="preserve">
<value>非クライアント領域の無いドラッグ可能ウインドウを開く</value>
</data>
<data name="DragHere" xml:space="preserve">
<value>Drag here</value>
</data>
<data name="MessageBox" xml:space="preserve">
<value>MessageBox</value>
</data>
<data name="ProgressButton" xml:space="preserve">
<value>ProgressButton</value>
</data>
<data name="UploadStr" xml:space="preserve">
<value>アップロード;アップロード中</value>
</data>
<data name="OpenCustomMessageWindow" xml:space="preserve">
<value>カスタムメッセージウインドウを開く</value>
</data>
<data name="Transfer" xml:space="preserve">
<value>Transfer</value>
</data>
<data name="ChatBubble" xml:space="preserve">
<value>ChatBubble</value>
</data>
<data name="PushToTalk" xml:space="preserve">
<value>Push to talk</value>
</data>
<data name="Second" xml:space="preserve">
<value>Sec</value>
</data>
<data name="Label" xml:space="preserve">
<value>Label</value>
</data>
<data name="GotoTop" xml:space="preserve">
<value>GotoTop</value>
</data>
<data name="NotifyIcon" xml:space="preserve">
<value>NotifyIcon</value>
</data>
<data name="Badge" xml:space="preserve">
<value>Badge</value>
</data>
<data name="Gravatar" xml:space="preserve">
<value>Gravatar</value>
</data>
<data name="ComingSoon" xml:space="preserve">
<value>近日公開</value>
</data>
<data name="Comment" xml:space="preserve">
<value>Comment</value>
</data>
<data name="Reply" xml:space="preserve">
<value>Reply</value>
</data>
<data name="Dialog" xml:space="preserve">
<value>Dialog</value>
</data>
<data name="TextDialog" xml:space="preserve">
<value>TextDialog</value>
</data>
<data name="PleaseWait" xml:space="preserve">
<value>お待ちください...</value>
</data>
<data name="GrowlDemo" xml:space="preserve">
<value>Growl デモ</value>
</data>
<data name="NewWindow" xml:space="preserve">
<value>新規ウインドウ</value>
</data>
<data name="Visibility" xml:space="preserve">
<value>表示</value>
</data>
<data name="Blink" xml:space="preserve">
<value>点滅</value>
</data>
<data name="Exit" xml:space="preserve">
<value>Exit</value>
</data>
<data name="OpenPanel" xml:space="preserve">
<value>Open Panel</value>
</data>
<data name="AppClosingTip" xml:space="preserve">
<value>The tray icon is open and will hide the window instead of closing the program</value>
</data>
<data name="Tip" xml:space="preserve">
<value>Prompt</value>
</data>
<data name="Try2CloseApp" xml:space="preserve">
<value>Try to close app?</value>
</data>
<data name="InteractiveDialog" xml:space="preserve">
<value>対話型 Dialog</value>
</data>
<data name="Ok" xml:space="preserve">
<value>Ok</value>
</data>
<data name="PleaseInput" xml:space="preserve">
<value>入力してください...</value>
</data>
<data name="Click2Count" xml:space="preserve">
<value>Click to count</value>
</data>
<data name="RepeatButton" xml:space="preserve">
<value>RepeatButton</value>
</data>
<data name="DialogDemo" xml:space="preserve">
<value>Dialog デモ</value>
</data>
<data name="ShowInCurrentWindow" xml:space="preserve">
<value>このウインドウに表示</value>
</data>
<data name="ShowInMainWindow" xml:space="preserve">
<value>メインウインドウに表示</value>
</data>
<data name="SideMenu" xml:space="preserve">
<value>SideMenu</value>
</data>
<data name="Grid" xml:space="preserve">
<value>Grid</value>
</data>
<data name="BasicLayout" xml:space="preserve">
<value>基本レイアウト</value>
</data>
<data name="ColumnSpacing" xml:space="preserve">
<value>列スペース</value>
</data>
<data name="HybridLayout" xml:space="preserve">
<value>混合レイアウト</value>
</data>
<data name="ColumnOffset" xml:space="preserve">
<value>列オフセット</value>
</data>
<data name="ResponsiveLayout" xml:space="preserve">
<value>レスポンシブレイアウト</value>
</data>
<data name="Border" xml:space="preserve">
<value>Border</value>
</data>
<data name="Poptip" xml:space="preserve">
<value>Poptip</value>
</data>
<data name="Recommendation" xml:space="preserve">
<value>おすすめ</value>
</data>
<data name="Project" xml:space="preserve">
<value>プロジェクト</value>
</data>
<data name="RangeSlider" xml:space="preserve">
<value>RangeSlider</value>
</data>
<data name="RelativePanel" xml:space="preserve">
<value>RelativePanel</value>
</data>
<data name="On" xml:space="preserve">
<value>On</value>
</data>
<data name="Off" xml:space="preserve">
<value>Off</value>
</data>
<data name="ButtonGroup" xml:space="preserve">
<value>ButtonGroup</value>
</data>
<data name="Card" xml:space="preserve">
<value>Card</value>
</data>
<data name="TextDialogWithTimer" xml:space="preserve">
<value>TextDialog, タイマーあり</value>
</data>
<data name="Magnifier" xml:space="preserve">
<value>Magnifier</value>
</data>
<data name="ImageBlock" xml:space="preserve">
<value>ImageBlock</value>
</data>
<data name="RunningBlock" xml:space="preserve">
<value>RunningBlock</value>
</data>
<data name="HoneycombPanel" xml:space="preserve">
<value>HoneycombPanel</value>
</data>
<data name="AddItem" xml:space="preserve">
<value>アイテム追加</value>
</data>
<data name="RemoveItem" xml:space="preserve">
<value>アイテム削除</value>
</data>
<data name="Sprite" xml:space="preserve">
<value>Sprite</value>
</data>
<data name="OpenSprite" xml:space="preserve">
<value>Spriteを開く</value>
</data>
<data name="Notification" xml:space="preserve">
<value>Notification</value>
</data>
<data name="SendNotification" xml:space="preserve">
<value>通知を送信</value>
</data>
<data name="StaysOpen" xml:space="preserve">
<value>開いたままにする</value>
</data>
<data name="FloatingBlock" xml:space="preserve">
<value>FloatingBlock</value>
</data>
<data name="SplitButton" xml:space="preserve">
<value>SplitButton</value>
</data>
<data name="Tools" xml:space="preserve">
<value>ツール</value>
</data>
<data name="HatchBrushGenerator" xml:space="preserve">
<value>HatchBrushGenerator</value>
</data>
<data name="Morphing Animation" xml:space="preserve">
<value>Morphing Animation</value>
</data>
<data name="Divider" xml:space="preserve">
<value>Divider</value>
</data>
<data name="PoptipPositionStr" xml:space="preserve">
<value>top-start;top;top-end;right-start;right;right-end;bottom-end;bottom;bottom-start;left-end;left;left-start</value>
</data>
<data name="TransitioningContentControl" xml:space="preserve">
<value>TransitioningContentControl</value>
</data>
<data name="Drawer" xml:space="preserve">
<value>Drawer</value>
</data>
<data name="Documentation" xml:space="preserve">
<value>ドキュメント</value>
</data>
<data name="Effects" xml:space="preserve">
<value>Effects</value>
</data>
<data name="Website" xml:space="preserve">
<value>ウェブサイト</value>
</data>
<data name="Vsix" xml:space="preserve">
<value>Vsix</value>
</data>
<data name="Doc_en" xml:space="preserve">
<value>英語ドキュメント</value>
</data>
<data name="Doc_cn" xml:space="preserve">
<value>中国語ドキュメント</value>
</data>
<data name="Demo" xml:space="preserve">
<value>デモ</value>
</data>
<data name="PinBox" xml:space="preserve">
<value>PinBox</value>
</data>
<data name="FlowDocumentScrollViewer" xml:space="preserve">
<value>FlowDocumentScrollViewer</value>
</data>
<data name="OpenGlowWindow" xml:space="preserve">
<value>GlowWindowを開く</value>
</data>
<data name="FlowDocument" xml:space="preserve">
<value>FlowDocument</value>
</data>
<data name="FlowDocumentPageViewer" xml:space="preserve">
<value>FlowDocumentPageViewer</value>
</data>
<data name="FlowDocumentReader" xml:space="preserve">
<value>FlowDocumentReader</value>
</data>
<data name="OpenNativeCommonWindow" xml:space="preserve">
<value>標準のウインドウを開く</value>
</data>
<data name="OpenNavigationWindow" xml:space="preserve">
<value>ナビゲーションウインドウを開く</value>
</data>
<data name="Frame" xml:space="preserve">
<value>Frame</value>
</data>
<data name="PracticalDemos" xml:space="preserve">
<value>実用例</value>
</data>
<data name="StartScreenshot" xml:space="preserve">
<value>スクリーンショット開始</value>
</data>
<data name="Screenshot" xml:space="preserve">
<value>Screenshot</value>
</data>
<data name="TextDialogInControl" xml:space="preserve">
<value>TextDialog(コントロール内)</value>
</data>
<data name="LangComment" xml:space="preserve">
<value>Looks up a localized string similar to "{0}".</value>
</data>
<data name="PropertyGrid" xml:space="preserve">
<value>PropertyGrid</value>
</data>
<data name="ImageSelector" xml:space="preserve">
<value>ImageSelector</value>
</data>
<data name="Geometry" xml:space="preserve">
<value>Geometry</value>
</data>
<data name="CheckComboBox" xml:space="preserve">
<value>CheckComboBox</value>
</data>
<data name="FlexPanel" xml:space="preserve">
<value>FlexPanel</value>
</data>
<data name="OpenTouchDragMoveWindow" xml:space="preserve">
<value>タッチ移動ウインドウを開く</value>
</data>
<data name="UniformSpacingPanel" xml:space="preserve">
<value>UniformSpacingPanel</value>
</data>
<data name="Misc" xml:space="preserve">
<value>Misc</value>
</data>
<data name="Interacting" xml:space="preserve">
<value>Interacting</value>
</data>
<data name="DataEntry" xml:space="preserve">
<value>Data Entry</value>
</data>
<data name="DataDisplay" xml:space="preserve">
<value>Data Display</value>
</data>
<data name="Navigation" xml:space="preserve">
<value>Navigation</value>
</data>
<data name="Layout" xml:space="preserve">
<value>Layout</value>
</data>
<data name="Feedback" xml:space="preserve">
<value>Feedback</value>
</data>
<data name="Empty" xml:space="preserve">
<value>Empty</value>
</data>
<data name="ElementGroup" xml:space="preserve">
<value>ElementGroup</value>
</data>
<data name="AutoCompleteTextBox" xml:space="preserve">
<value>AutoCompleteTextBox</value>
</data>
</root>
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")
};
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

@@ -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);
}
}
@@ -1,10 +1,9 @@
namespace HandyControlDemo.UserControl
namespace HandyControlDemo.UserControl;
public partial class AnimationPathDemoCtl
{
public partial class AnimationPathDemoCtl
public AnimationPathDemoCtl()
{
public AnimationPathDemoCtl()
{
InitializeComponent();
}
InitializeComponent();
}
}
@@ -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>
@@ -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);
}
}
@@ -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>
Loaded 100 of 986 files, more files were not shown because too many files have changed in this diff. Show more