From 0cc61e8574f5f47f60679aca5994e27c24f21256 Mon Sep 17 00:00:00 2001 From: Mahdi Hosseini Date: Sat, 8 Feb 2020 19:48:46 +0330 Subject: [PATCH 01/12] Fix table --- doc/source/handycontrol/native_controls/toggleButton/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/handycontrol/native_controls/toggleButton/index.md b/doc/source/handycontrol/native_controls/toggleButton/index.md index c2e65ddc..94a04022 100644 --- a/doc/source/handycontrol/native_controls/toggleButton/index.md +++ b/doc/source/handycontrol/native_controls/toggleButton/index.md @@ -90,7 +90,7 @@ title: ToggleButton 切换按钮 ## 相关样式 | 名称 | 继承自 | -| - | - | - | +| - | - | | ToggleButtonSwitch | ToggleButtonSwitchBaseStyle | 案例: @@ -174,4 +174,4 @@ title: ToggleButton 切换按钮 效果: -![ToggleButtonCustom](https://raw.githubusercontent.com/HandyOrg/HandyOrgResource/master/HandyControl/Doc/native_controls/ToggleButtonCustom.png) \ No newline at end of file +![ToggleButtonCustom](https://raw.githubusercontent.com/HandyOrg/HandyOrgResource/master/HandyControl/Doc/native_controls/ToggleButtonCustom.png) From c6e146951d505d8b8673bbf98d46f0b00b5a665c Mon Sep 17 00:00:00 2001 From: Mahdi Date: Sat, 8 Feb 2020 19:52:03 +0330 Subject: [PATCH 02/12] remove duplicate --- doc/source/handycontrol/langs/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/source/handycontrol/langs/index.md b/doc/source/handycontrol/langs/index.md index 48aa6242..b3442cff 100644 --- a/doc/source/handycontrol/langs/index.md +++ b/doc/source/handycontrol/langs/index.md @@ -25,7 +25,6 @@ title: 国际化 * 简体中文(zh-cn) * 英文(en) -* 英文(en) * 波斯语(fa) * 法语(fr) * 韩文 (ko-kr) From 7f0330856d49d2d54fb867313dc4eeb67586f57a Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Sat, 15 Feb 2020 19:39:53 +0800 Subject: [PATCH 03/12] fixed #192 --- .../HandyControlDemo_Core30.csproj | 2 + .../Themes/Styles/Window.xaml | 2 +- src/HandyControl.sln | 43 +- .../HandyControlDemo_Net_40.csproj | 7 + .../Themes/Styles/Window.xaml | 2 +- .../HandyControlDemo_Net_GE45.csproj | 7 + .../Themes/Styles/Window.xaml | 2 +- .../HandyControlDemo_Code/DemoHelper.cs | 25 + .../HandyControlDemo_Code.csproj | 990 ++++++++++++++++++ .../Data/Model/DemoInfoModel.cs | 2 + .../HandyControlDemo_Shared.projitems | 1 - .../Service/Data/DataService.cs | 4 +- .../Tools/Helper/ExternDllHelper.cs | 12 - .../Tools/Helper/Win32Helper.cs | 3 + .../UserControl/Main/LeftMainContent.xaml.cs | 2 + .../UserControl/Main/MainContent.xaml | 22 +- .../UserControl/Main/MainContent.xaml.cs | 23 + .../ViewModel/Basic/ChatBoxViewModel.cs | 18 +- .../ViewModel/Main/MainViewModel.cs | 18 +- .../Controls/Other/Drawer.cs | 26 +- 20 files changed, 1159 insertions(+), 52 deletions(-) create mode 100644 src/Shared/HandyControlDemo_Code/DemoHelper.cs create mode 100644 src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj delete mode 100644 src/Shared/HandyControlDemo_Shared/Tools/Helper/ExternDllHelper.cs diff --git a/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj b/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj index 7705c249..131d6014 100644 --- a/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj +++ b/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj @@ -21,6 +21,7 @@ TRACE;Core + @@ -46,6 +47,7 @@ + diff --git a/src/Core_30/HandyControl_Core_30/Themes/Styles/Window.xaml b/src/Core_30/HandyControl_Core_30/Themes/Styles/Window.xaml index 15e08920..c48c486c 100644 --- a/src/Core_30/HandyControl_Core_30/Themes/Styles/Window.xaml +++ b/src/Core_30/HandyControl_Core_30/Themes/Styles/Window.xaml @@ -117,7 +117,7 @@ - + diff --git a/src/HandyControl.sln b/src/HandyControl.sln index d4e18bab..78a3e474 100644 --- a/src/HandyControl.sln +++ b/src/HandyControl.sln @@ -27,6 +27,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControl_Net_40", "Net_ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControlDemo_Net_40", "Net_40\HandyControlDemo_Net_40\HandyControlDemo_Net_40.csproj", "{D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControlDemo_Code", "Shared\HandyControlDemo_Code\HandyControlDemo_Code.csproj", "{D8A4748C-0500-4F63-BC47-3506658C68F7}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution Shared\HandyControl_Shared\HandyControl_Shared.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 4 @@ -102,13 +104,9 @@ Global {BE4A567D-B6E0-413E-8F64-E1A53B4F9366}.Release-Core30|Any CPU.Build.0 = Release|Any CPU {BE4A567D-B6E0-413E-8F64-E1A53B4F9366}.Release-Net40|Any CPU.ActiveCfg = Release|Any CPU {BE4A567D-B6E0-413E-8F64-E1A53B4F9366}.Release-Net45|Any CPU.ActiveCfg = Release|Any CPU - {BE4A567D-B6E0-413E-8F64-E1A53B4F9366}.Release-Net45|Any CPU.Build.0 = Release|Any CPU {BE4A567D-B6E0-413E-8F64-E1A53B4F9366}.Release-Net462|Any CPU.ActiveCfg = Release|Any CPU - {BE4A567D-B6E0-413E-8F64-E1A53B4F9366}.Release-Net462|Any CPU.Build.0 = Release|Any CPU {BE4A567D-B6E0-413E-8F64-E1A53B4F9366}.Release-Net47|Any CPU.ActiveCfg = Release|Any CPU - {BE4A567D-B6E0-413E-8F64-E1A53B4F9366}.Release-Net47|Any CPU.Build.0 = Release|Any CPU {BE4A567D-B6E0-413E-8F64-E1A53B4F9366}.Release-Net48|Any CPU.ActiveCfg = Release|Any CPU - {BE4A567D-B6E0-413E-8F64-E1A53B4F9366}.Release-Net48|Any CPU.Build.0 = Release|Any CPU {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Debug-Core30|Any CPU.ActiveCfg = Debug|Any CPU {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Debug-Core30|Any CPU.Build.0 = Debug|Any CPU {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Debug-Net40|Any CPU.ActiveCfg = Debug|Any CPU @@ -120,13 +118,9 @@ Global {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Release-Core30|Any CPU.Build.0 = Release|Any CPU {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Release-Net40|Any CPU.ActiveCfg = Release|Any CPU {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Release-Net45|Any CPU.ActiveCfg = Release|Any CPU - {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Release-Net45|Any CPU.Build.0 = Release|Any CPU {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Release-Net462|Any CPU.ActiveCfg = Release|Any CPU - {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Release-Net462|Any CPU.Build.0 = Release|Any CPU {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Release-Net47|Any CPU.ActiveCfg = Release|Any CPU - {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Release-Net47|Any CPU.Build.0 = Release|Any CPU {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Release-Net48|Any CPU.ActiveCfg = Release|Any CPU - {D7107690-8592-4F9F-9379-9B82C1C15D2A}.Release-Net48|Any CPU.Build.0 = Release|Any CPU {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Debug-Core30|Any CPU.ActiveCfg = Debug|Any CPU {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Debug-Net40|Any CPU.ActiveCfg = Debug|Any CPU {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Debug-Net40|Any CPU.Build.0 = Debug|Any CPU @@ -138,13 +132,9 @@ Global {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Release-Net40|Any CPU.ActiveCfg = Release|Any CPU {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Release-Net40|Any CPU.Build.0 = Release|Any CPU {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Release-Net45|Any CPU.ActiveCfg = Release|Any CPU - {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Release-Net45|Any CPU.Build.0 = Release|Any CPU {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Release-Net462|Any CPU.ActiveCfg = Release|Any CPU - {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Release-Net462|Any CPU.Build.0 = Release|Any CPU {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Release-Net47|Any CPU.ActiveCfg = Release|Any CPU - {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Release-Net47|Any CPU.Build.0 = Release|Any CPU {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Release-Net48|Any CPU.ActiveCfg = Release|Any CPU - {32204503-2EF0-4681-AE13-AA1FEB6C658A}.Release-Net48|Any CPU.Build.0 = Release|Any CPU {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Debug-Core30|Any CPU.ActiveCfg = Debug|Any CPU {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Debug-Net40|Any CPU.ActiveCfg = Debug|Any CPU {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Debug-Net40|Any CPU.Build.0 = Debug|Any CPU @@ -156,13 +146,33 @@ Global {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release-Net40|Any CPU.ActiveCfg = Release|Any CPU {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release-Net40|Any CPU.Build.0 = Release|Any CPU {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release-Net45|Any CPU.ActiveCfg = Release|Any CPU - {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release-Net45|Any CPU.Build.0 = Release|Any CPU {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release-Net462|Any CPU.ActiveCfg = Release|Any CPU - {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release-Net462|Any CPU.Build.0 = Release|Any CPU {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release-Net47|Any CPU.ActiveCfg = Release|Any CPU - {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release-Net47|Any CPU.Build.0 = Release|Any CPU {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release-Net48|Any CPU.ActiveCfg = Release|Any CPU - {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release-Net48|Any CPU.Build.0 = Release|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Core30|Any CPU.ActiveCfg = Debug-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Core30|Any CPU.Build.0 = Debug-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net40|Any CPU.ActiveCfg = Debug-Net40|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net40|Any CPU.Build.0 = Debug-Net40|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net45|Any CPU.ActiveCfg = Debug-Net45|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net45|Any CPU.Build.0 = Debug-Net45|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net462|Any CPU.ActiveCfg = Debug-Net462|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net462|Any CPU.Build.0 = Debug-Net462|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net47|Any CPU.ActiveCfg = Debug-Net47|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net47|Any CPU.Build.0 = Debug-Net47|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net48|Any CPU.ActiveCfg = Debug-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net48|Any CPU.Build.0 = Debug-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Core30|Any CPU.ActiveCfg = Release-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Core30|Any CPU.Build.0 = Release-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net40|Any CPU.ActiveCfg = Release-Net40|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net40|Any CPU.Build.0 = Release-Net40|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net45|Any CPU.ActiveCfg = Release-Net45|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net45|Any CPU.Build.0 = Release-Net45|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net462|Any CPU.ActiveCfg = Release-Net462|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net462|Any CPU.Build.0 = Release-Net462|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net47|Any CPU.ActiveCfg = Release-Net47|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net47|Any CPU.Build.0 = Release-Net47|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net48|Any CPU.ActiveCfg = Release-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net48|Any CPU.Build.0 = Release-Net48|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -176,6 +186,7 @@ Global {D7107690-8592-4F9F-9379-9B82C1C15D2A} = {B838C973-06F0-48A1-B259-A357AAF2D8D4} {32204503-2EF0-4681-AE13-AA1FEB6C658A} = {35E3F9C0-8924-4536-BE09-F3761FDBF066} {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231} = {35E3F9C0-8924-4536-BE09-F3761FDBF066} + {D8A4748C-0500-4F63-BC47-3506658C68F7} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D4636382-1A18-4079-A3E7-054DD970F179} diff --git a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj index 3da0dae4..52e82269 100644 --- a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj +++ b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj @@ -57,6 +57,9 @@ + + 6.0.1 + 5.4.1.1 @@ -395,6 +398,10 @@ + + {d8a4748c-0500-4f63-bc47-3506658c68f7} + HandyControlDemo_Code + {32204503-2ef0-4681-ae13-aa1feb6c658a} HandyControl_Net_40 diff --git a/src/Net_40/HandyControl_Net_40/Themes/Styles/Window.xaml b/src/Net_40/HandyControl_Net_40/Themes/Styles/Window.xaml index b0203625..a9e520ac 100644 --- a/src/Net_40/HandyControl_Net_40/Themes/Styles/Window.xaml +++ b/src/Net_40/HandyControl_Net_40/Themes/Styles/Window.xaml @@ -118,7 +118,7 @@ - + diff --git a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj index 6b365cd1..0d81c9b3 100644 --- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj +++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj @@ -127,12 +127,19 @@ + + {d8a4748c-0500-4f63-bc47-3506658c68f7} + HandyControlDemo_Code + {dc966e3d-bcff-4652-98cf-070e5494749a} HandyControl_Net_GE45 + + 6.0.1 + 5.4.1.1 diff --git a/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Window.xaml b/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Window.xaml index 84b09e51..82e8e68b 100644 --- a/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Window.xaml +++ b/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Window.xaml @@ -117,7 +117,7 @@ - + diff --git a/src/Shared/HandyControlDemo_Code/DemoHelper.cs b/src/Shared/HandyControlDemo_Code/DemoHelper.cs new file mode 100644 index 00000000..b45e370e --- /dev/null +++ b/src/Shared/HandyControlDemo_Code/DemoHelper.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Windows; + +public class DemoHelper +{ + public static void Main() + { + + } + + public static string GetCode(string demoName) + { + var uri = new Uri($"/HandyControlDemoCode;component/{demoName}", UriKind.Relative); + var resourceStream = Application.GetResourceStream(uri); + if (resourceStream != null) + { + using var reader = new StreamReader(resourceStream.Stream); + var code = reader.ReadToEnd(); + return code; + } + + return ""; + } +} \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj b/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj new file mode 100644 index 00000000..db149ee9 --- /dev/null +++ b/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj @@ -0,0 +1,990 @@ + + + + + Debug + AnyCPU + {D8A4748C-0500-4F63-BC47-3506658C68F7} + Library + HandyControlDemoCode + HandyControlDemoCode + v4.0 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE;netle45;netle40 + prompt + 4 + v4.0 + 8.0 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + v4.5 + 8.0 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + v4.6.2 + 8.0 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + v4.7 + 8.0 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + v4.8 + 8.0 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE;netle45;netle40 + prompt + 4 + v4.0 + 8.0 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + v4.5 + 8.0 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + v4.6.2 + 8.0 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + v4.7 + 8.0 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + v4.8 + 8.0 + + + + + + + + + + Window\AboutWindow.xaml + + + Window\BlurWindow.xaml + + + Window\CommonWindow.xaml + + + Window\CustomNonClientAreaWindow.xaml + + + Window\DialogDemoWindow.xaml + + + Window\GlowWindow.xaml + + + Window\GrowlDemoWindow.xaml + + + Window\NativeCommonWindow.xaml + + + Window\NavigationWindow.xaml + + + Window\NoNonClientAreaDragableWindow.xaml + + + UserControl\Basic\Avatar.xaml + + + UserControl\Basic\ChatBox.xaml + + + UserControl\Basic\InteractiveDialog.xaml + + + UserControl\Basic\TextDialog.xaml + + + UserControl\Basic\TextDialogWithTimer.xaml + + + UserControl\Controls\AnimationPathDemoCtl.xaml + + + UserControl\Controls\BadgeDemoCtl.xaml + + + UserControl\Controls\ButtonGroupDemoCtl.xaml + + + UserControl\Controls\CalendarWithClockDemoCtl.xaml + + + UserControl\Controls\CardDemoCtl.xaml + + + UserControl\Controls\CarouselDemoCtl.xaml + + + UserControl\Controls\ChatBubbleDemoCtl.xaml + + + UserControl\Controls\CirclePanelDemoCtl.xaml + + + UserControl\Controls\ClockDemoCtl.xaml + + + UserControl\Controls\ColorPickerDemoCtl.xaml + + + UserControl\Controls\ComboBoxDemoCtl.xaml + + + UserControl\Controls\CompareSliderDemoCtl.xaml + + + UserControl\Controls\CoverFlowDemoCtl.xaml + + + UserControl\Controls\CoverViewDemoCtl.xaml + + + UserControl\Controls\DatePickerDemoCtl.xaml + + + UserControl\Controls\DateTimePickerDemoCtl.xaml + + + UserControl\Controls\DialogDemoCtl.xaml + + + UserControl\Controls\DividerDemoCtl.xaml + + + UserControl\Controls\DrawerDemoCtl.xaml + + + UserControl\Controls\FlipClockDemoCtl.xaml + + + UserControl\Controls\FloatingBlockDemoCtl.xaml + + + UserControl\Controls\GifImageDemoCtl.xaml + + + UserControl\Controls\GotoTopDemoCtl.xaml + + + UserControl\Controls\GravatarDemoCtl.xaml + + + UserControl\Controls\GridDemoCtl.xaml + + + UserControl\Controls\GrowlDemoCtl.xaml + + + UserControl\Controls\HoneycombPanelDemoCtl.xaml + + + UserControl\Controls\ImageBlockDemoCtl.xaml + + + UserControl\Controls\ImageBrowserDemoCtl.xaml + + + UserControl\Controls\LoadingDemoCtl.xaml + + + UserControl\Controls\MagnifierDemoCtl.xaml + + + UserControl\Controls\NotificationDemoCtl.xaml + + + UserControl\Controls\NotifyIconDemoCtl.xaml + + + UserControl\Controls\NumericUpDownDemoCtl.xaml + + + UserControl\Controls\OutlineTextDemoCtl.xaml + + + UserControl\Controls\PaginationDemoCtl.xaml + + + UserControl\Controls\PasswordBoxDemoCtl.xaml + + + UserControl\Controls\PinBoxDemoCtl.xaml + + + UserControl\Controls\PoptipDemoCtl.xaml + + + UserControl\Controls\PreviewSliderDemoCtl.xaml + + + UserControl\Controls\ProgressBarDemoCtl.xaml + + + UserControl\Controls\ProgressButtonDemoCtl.xaml + + + UserControl\Controls\RangeSliderDemoCtl.xaml + + + UserControl\Controls\RateDemoCtl.xaml + + + UserControl\Controls\RelativePanelDemoCtl.xaml + + + UserControl\Controls\RunningBlockDemoCtl.xaml + + + UserControl\Controls\ScrollViewerDemoCtl.xaml + + + UserControl\Controls\SearchBarDemoCtl.xaml + + + UserControl\Controls\ShieldDemoCtl.xaml + + + UserControl\Controls\SideMenuDemoCtl.xaml + + + UserControl\Controls\SplitButtonDemoCtl.xaml + + + UserControl\Controls\SpriteDemoCtl.xaml + + + UserControl\Controls\StepBarDemoCtl.xaml + + + UserControl\Controls\TabControlDemoCtl.xaml + + + UserControl\Controls\TagDemoCtl.xaml + + + UserControl\Controls\TextBoxDemoCtl.xaml + + + UserControl\Controls\TimeBarDemoCtl.xaml + + + UserControl\Controls\TimePickerDemoCtl.xaml + + + UserControl\Controls\TransferDemoCtl.xaml + + + UserControl\Controls\TransitioningContentControlDemoCtl.xaml + + + UserControl\Controls\WaterfallPanelDemoCtl.xaml + + + UserControl\Controls\WindowDemoCtl.xaml + + + UserControl\Styles\BorderDemoCtl.xaml + + + UserControl\Styles\BrushDemoCtl.xaml + + + UserControl\Styles\ButtonDemoCtl.xaml + + + UserControl\Styles\CalendarDemoCtl.xaml + + + UserControl\Styles\CheckBoxDemoCtl.xaml + + + UserControl\Styles\DataGridDemoCtl.xaml + + + UserControl\Styles\ExpanderDemoCtl.xaml + + + UserControl\Styles\FlowDocumentDemoCtl.xaml + + + UserControl\Styles\FrameDemoCtl.xaml + + + UserControl\Styles\GroupBoxDemoCtl.xaml + + + UserControl\Styles\LabelDemoCtl.xaml + + + UserControl\Styles\ListBoxDemoCtl.xaml + + + UserControl\Styles\ListViewDemoCtl.xaml + + + UserControl\Styles\MenuDemoCtl.xaml + + + UserControl\Styles\NativeComboBoxDemoCtl.xaml + + + UserControl\Styles\NativeDatePickerDemoCtl.xaml + + + UserControl\Styles\NativePasswordBoxDemoCtl.xaml + + + UserControl\Styles\NativeProgressBarDemoCtl.xaml + + + UserControl\Styles\NativeScrollViewerDemoCtl.xaml + + + UserControl\Styles\NativeTabControlDemoCtl.xaml + + + UserControl\Styles\NativeTextBoxDemoCtl.xaml + + + UserControl\Styles\NativeWindowDemoCtl.xaml + + + UserControl\Styles\RadioButtonDemoCtl.xaml + + + UserControl\Styles\RepeatButtonDemoCtl.xaml + + + UserControl\Styles\RichTextBoxDemoCtl.xaml + + + UserControl\Styles\SliderDemoCtl.xaml + + + UserControl\Styles\TextBlockDemoCtl.xaml + + + UserControl\Styles\ToggleButtonDemoCtl.xaml + + + UserControl\Styles\ToolBarDemoCtl.xaml + + + UserControl\Styles\TreeViewDemoCtl.xaml + + + UserControl\Tools\EffectsDemoCtl.xaml + + + UserControl\Tools\GeometryAnimationDemoCtl.xaml + + + UserControl\Tools\HatchBrushGeneratorDemoCtl.xaml + + + + + Window\AboutWindow.xaml.cs + AboutWindow.xaml + + + Window\BlurWindow.xaml.cs + BlurWindow.xaml + + + Window\CommonWindow.xaml.cs + CommonWindow.xaml + + + Window\CustomNonClientAreaWindow.xaml.cs + CustomNonClientAreaWindow.xaml + + + Window\DialogDemoWindow.xaml.cs + DialogDemoWindow.xaml + + + Window\GlowWindow.xaml.cs + GlowWindow.xaml + + + Window\GrowlDemoWindow.xaml.cs + GrowlDemoWindow.xaml + + + Window\NativeCommonWindow.xaml.cs + NativeCommonWindow.xaml + + + Window\NavigationWindow.xaml.cs + NavigationWindow.xaml + + + Window\NoNonClientAreaDragableWindow.xaml.cs + NoNonClientAreaDragableWindow.xaml + + + UserControl\Basic\Avatar.xaml.cs + Avatar.xaml + + + UserControl\Basic\ChatBox.xaml.cs + ChatBox.xaml + + + UserControl\Basic\IFull.cs + + + UserControl\Basic\InteractiveDialog.xaml.cs + InteractiveDialog.xaml + + + UserControl\Basic\TextDialog.xaml.cs + TextDialog.xaml + + + UserControl\Basic\TextDialogWithTimer.xaml.cs + TextDialogWithTimer.xaml + + + UserControl\Controls\AnimationPathDemoCtl.xaml.cs + AnimationPathDemoCtl.xaml + + + UserControl\Controls\BadgeDemoCtl.xaml.cs + BadgeDemoCtl.xaml + + + UserControl\Controls\ButtonGroupDemoCtl.xaml.cs + ButtonGroupDemoCtl.xaml + + + UserControl\Controls\CalendarWithClockDemoCtl.xaml.cs + CalendarWithClockDemoCtl.xaml + + + UserControl\Controls\CardDemoCtl.xaml.cs + CardDemoCtl.xaml + + + UserControl\Controls\CarouselDemoCtl.xaml.cs + CarouselDemoCtl.xaml + + + UserControl\Controls\ChatBubbleDemoCtl.xaml.cs + ChatBubbleDemoCtl.xaml + + + UserControl\Controls\CirclePanelDemoCtl.xaml.cs + CirclePanelDemoCtl.xaml + + + UserControl\Controls\ClockDemoCtl.xaml.cs + ClockDemoCtl.xaml + + + UserControl\Controls\ColorPickerDemoCtl.xaml.cs + ColorPickerDemoCtl.xaml + + + UserControl\Controls\ComboBoxDemoCtl.xaml.cs + ComboBoxDemoCtl.xaml + + + UserControl\Controls\CompareSliderDemoCtl.xaml.cs + CompareSliderDemoCtl.xaml + + + UserControl\Controls\CoverFlowDemoCtl.xaml.cs + CoverFlowDemoCtl.xaml + + + UserControl\Controls\CoverViewDemoCtl.xaml.cs + CoverViewDemoCtl.xaml + + + UserControl\Controls\DatePickerDemoCtl.xaml.cs + DatePickerDemoCtl.xaml + + + UserControl\Controls\DateTimePickerDemoCtl.xaml.cs + DateTimePickerDemoCtl.xaml + + + UserControl\Controls\DialogDemoCtl.xaml.cs + DialogDemoCtl.xaml + + + UserControl\Controls\DividerDemoCtl.xaml.cs + DividerDemoCtl.xaml + + + UserControl\Controls\DrawerDemoCtl.xaml.cs + DrawerDemoCtl.xaml + + + UserControl\Controls\FlipClockDemoCtl.xaml.cs + FlipClockDemoCtl.xaml + + + UserControl\Controls\FloatingBlockDemoCtl.xaml.cs + FloatingBlockDemoCtl.xaml + + + UserControl\Controls\GifImageDemoCtl.xaml.cs + GifImageDemoCtl.xaml + + + UserControl\Controls\GotoTopDemoCtl.xaml.cs + GotoTopDemoCtl.xaml + + + UserControl\Controls\GravatarDemoCtl.xaml.cs + GravatarDemoCtl.xaml + + + UserControl\Controls\GridDemoCtl.xaml.cs + GridDemoCtl.xaml + + + UserControl\Controls\GrowlDemoCtl.xaml.cs + GrowlDemoCtl.xaml + + + UserControl\Controls\HoneycombPanelDemoCtl.xaml.cs + HoneycombPanelDemoCtl.xaml + + + UserControl\Controls\ImageBlockDemoCtl.xaml.cs + ImageBlockDemoCtl.xaml + + + UserControl\Controls\ImageBrowserDemoCtl.xaml.cs + ImageBrowserDemoCtl.xaml + + + UserControl\Controls\LoadingDemoCtl.xaml.cs + LoadingDemoCtl.xaml + + + UserControl\Controls\MagnifierDemoCtl.xaml.cs + MagnifierDemoCtl.xaml + + + UserControl\Controls\NotificationDemoCtl.xaml.cs + NotificationDemoCtl.xaml + + + UserControl\Controls\NotifyIconDemoCtl.xaml.cs + NotifyIconDemoCtl.xaml + + + UserControl\Controls\NumericUpDownDemoCtl.xaml.cs + NumericUpDownDemoCtl.xaml + + + UserControl\Controls\OutlineTextDemoCtl.xaml.cs + OutlineTextDemoCtl.xaml + + + UserControl\Controls\PaginationDemoCtl.xaml.cs + PaginationDemoCtl.xaml + + + UserControl\Controls\PasswordBoxDemoCtl.xaml.cs + PasswordBoxDemoCtl.xaml + + + UserControl\Controls\PinBoxDemoCtl.xaml.cs + PinBoxDemoCtl.xaml + + + UserControl\Controls\PoptipDemoCtl.xaml.cs + PoptipDemoCtl.xaml + + + UserControl\Controls\PreviewSliderDemoCtl.xaml.cs + PreviewSliderDemoCtl.xaml + + + UserControl\Controls\ProgressBarDemoCtl.xaml.cs + ProgressBarDemoCtl.xaml + + + UserControl\Controls\ProgressButtonDemoCtl.xaml.cs + ProgressButtonDemoCtl.xaml + + + UserControl\Controls\RangeSliderDemoCtl.xaml.cs + RangeSliderDemoCtl.xaml + + + UserControl\Controls\RateDemoCtl.xaml.cs + RateDemoCtl.xaml + + + UserControl\Controls\RelativePanelDemoCtl.xaml.cs + RelativePanelDemoCtl.xaml + + + UserControl\Controls\RunningBlockDemoCtl.xaml.cs + RunningBlockDemoCtl.xaml + + + UserControl\Controls\ScrollViewerDemoCtl.xaml.cs + ScrollViewerDemoCtl.xaml + + + UserControl\Controls\SearchBarDemoCtl.xaml.cs + SearchBarDemoCtl.xaml + + + UserControl\Controls\ShieldDemoCtl.xaml.cs + ShieldDemoCtl.xaml + + + UserControl\Controls\SideMenuDemoCtl.xaml.cs + SideMenuDemoCtl.xaml + + + UserControl\Controls\SplitButtonDemoCtl.xaml.cs + SplitButtonDemoCtl.xaml + + + UserControl\Controls\SpriteDemoCtl.xaml.cs + SpriteDemoCtl.xaml + + + UserControl\Controls\StepBarDemoCtl.xaml.cs + StepBarDemoCtl.xaml + + + UserControl\Controls\TabControlDemoCtl.xaml.cs + TabControlDemoCtl.xaml + + + UserControl\Controls\TagDemoCtl.xaml.cs + TagDemoCtl.xaml + + + UserControl\Controls\TextBoxDemoCtl.xaml.cs + TextBoxDemoCtl.xaml + + + UserControl\Controls\TimeBarDemoCtl.xaml.cs + TimeBarDemoCtl.xaml + + + UserControl\Controls\TimePickerDemoCtl.xaml.cs + TimePickerDemoCtl.xaml + + + UserControl\Controls\TransferDemoCtl.xaml.cs + TransferDemoCtl.xaml + + + UserControl\Controls\TransitioningContentControlDemoCtl.xaml.cs + TransitioningContentControlDemoCtl.xaml + + + UserControl\Controls\WaterfallPanelDemoCtl.xaml.cs + WaterfallPanelDemoCtl.xaml + + + UserControl\Controls\WindowDemoCtl.xaml.cs + WindowDemoCtl.xaml + + + UserControl\Styles\BorderDemoCtl.xaml.cs + BorderDemoCtl.xaml + + + UserControl\Styles\BrushDemoCtl.xaml.cs + BrushDemoCtl.xaml + + + UserControl\Styles\ButtonDemoCtl.xaml.cs + ButtonDemoCtl.xaml + + + UserControl\Styles\CalendarDemoCtl.xaml.cs + CalendarDemoCtl.xaml + + + UserControl\Styles\CheckBoxDemoCtl.xaml.cs + CheckBoxDemoCtl.xaml + + + UserControl\Styles\DataGridDemoCtl.xaml.cs + DataGridDemoCtl.xaml + + + UserControl\Styles\ExpanderDemoCtl.xaml.cs + ExpanderDemoCtl.xaml + + + UserControl\Styles\FlowDocumentDemoCtl.xaml.cs + FlowDocumentDemoCtl.xaml + + + UserControl\Styles\FrameDemoCtl.xaml.cs + FrameDemoCtl.xaml + + + UserControl\Styles\GroupBoxDemoCtl.xaml.cs + GroupBoxDemoCtl.xaml + + + UserControl\Styles\LabelDemoCtl.xaml.cs + LabelDemoCtl.xaml + + + UserControl\Styles\ListBoxDemoCtl.xaml.cs + ListBoxDemoCtl.xaml + + + UserControl\Styles\ListViewDemoCtl.xaml.cs + ListViewDemoCtl.xaml + + + UserControl\Styles\MenuDemoCtl.xaml.cs + MenuDemoCtl.xaml + + + UserControl\Styles\NativeComboBoxDemoCtl.xaml.cs + NativeComboBoxDemoCtl.xaml + + + UserControl\Styles\NativeDatePickerDemoCtl.xaml.cs + NativeDatePickerDemoCtl.xaml + + + UserControl\Styles\NativePasswordBoxDemoCtl.xaml.cs + NativePasswordBoxDemoCtl.xaml + + + UserControl\Styles\NativeProgressBarDemoCtl.xaml.cs + NativeProgressBarDemoCtl.xaml + + + UserControl\Styles\NativeScrollViewerDemoCtl.xaml.cs + NativeScrollViewerDemoCtl.xaml + + + UserControl\Styles\NativeTabControlDemoCtl.xaml.cs + NativeTabControlDemoCtl.xaml + + + UserControl\Styles\NativeTextBoxDemoCtl.xaml.cs + NativeTextBoxDemoCtl.xaml + + + UserControl\Styles\NativeWindowDemoCtl.xaml.cs + NativeWindowDemoCtl.xaml + + + UserControl\Styles\RadioButtonDemoCtl.xaml.cs + RadioButtonDemoCtl.xaml + + + UserControl\Styles\RepeatButtonDemoCtl.xaml.cs + RepeatButtonDemoCtl.xaml + + + UserControl\Styles\RichTextBoxDemoCtl.xaml.cs + RichTextBoxDemoCtl.xaml + + + UserControl\Styles\SliderDemoCtl.xaml.cs + SliderDemoCtl.xaml + + + UserControl\Styles\TextBlockDemoCtl.xaml.cs + TextBlockDemoCtl.xaml + + + UserControl\Styles\ToggleButtonDemoCtl.xaml.cs + ToggleButtonDemoCtl.xaml + + + UserControl\Styles\ToolBarDemoCtl.xaml.cs + ToolBarDemoCtl.xaml + + + UserControl\Styles\TreeViewDemoCtl.xaml.cs + TreeViewDemoCtl.xaml + + + UserControl\Tools\EffectsDemoCtl.xaml.cs + EffectsDemoCtl.xaml + + + UserControl\Tools\GeometryAnimationDemoCtl.xaml.cs + GeometryAnimationDemoCtl.xaml + + + UserControl\Tools\HatchBrushGeneratorDemoCtl.xaml.cs + HatchBrushGeneratorDemoCtl.xaml + + + + + ViewModel\ChatBoxViewModel.cs + + + ViewModel\InteractiveDialogViewModel.cs + + + ViewModel\ComboBoxDemoViewModel.cs + + + ViewModel\BadgeDemoViewModel.cs + + + ViewModel\CardDemoViewModel.cs + + + ViewModel\CoverViewModel.cs + + + ViewModel\DialogDemoViewModel.cs + + + ViewModel\GrowlDemoViewModel.cs + + + ViewModel\ImageBrowserDemoViewModel.cs + + + ViewModel\NotificationDemoViewModel.cs + + + ViewModel\NotifyIconDemoViewModel.cs + + + ViewModel\PaginationDemoViewModel.cs + + + ViewModel\SearchBarDemoViewModel.cs + + + ViewModel\SideMenuDemoViewModel.cs + + + ViewModel\SplitButtonDemoViewModel.cs + + + ViewModel\SpriteDemoViewModel.cs + + + ViewModel\StepBarDemoViewModel.cs + + + ViewModel\TabControlDemoViewModel.cs + + + ViewModel\WindowDemoViewModel.cs + + + ViewModel\DemoViewModelBase!1.cs + + + ViewModel\ItemsDisplayViewModel.cs + + + ViewModel\MainViewModel.cs + + + ViewModel\NoUserViewModel.cs + + + + + + + + + \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/Data/Model/DemoInfoModel.cs b/src/Shared/HandyControlDemo_Shared/Data/Model/DemoInfoModel.cs index 30149de4..be5cc846 100644 --- a/src/Shared/HandyControlDemo_Shared/Data/Model/DemoInfoModel.cs +++ b/src/Shared/HandyControlDemo_Shared/Data/Model/DemoInfoModel.cs @@ -5,6 +5,8 @@ namespace HandyControlDemo.Data { public class DemoInfoModel : ViewModelBase { + public string Key { get; set; } + private string _title; public string Title diff --git a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems index ff7903f6..bc7d84b7 100644 --- a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems +++ b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems @@ -35,7 +35,6 @@ - Avatar.xaml diff --git a/src/Shared/HandyControlDemo_Shared/Service/Data/DataService.cs b/src/Shared/HandyControlDemo_Shared/Service/Data/DataService.cs index c4389402..c3517b70 100644 --- a/src/Shared/HandyControlDemo_Shared/Service/Data/DataService.cs +++ b/src/Shared/HandyControlDemo_Shared/Service/Data/DataService.cs @@ -373,10 +373,12 @@ namespace HandyControlDemo.Service var jsonObj = JsonConvert.DeserializeObject(jsonStr); foreach (var item in jsonObj) { - var title = Properties.Langs.Lang.ResourceManager.GetString((string)item.title); + var titleKey = (string) item.title; + var title = Properties.Langs.Lang.ResourceManager.GetString(titleKey); var list = Convert2DemoItemList(item.demoItemList); infoList.Add(new DemoInfoModel { + Key = titleKey, Title = title, DemoItemList = list }); diff --git a/src/Shared/HandyControlDemo_Shared/Tools/Helper/ExternDllHelper.cs b/src/Shared/HandyControlDemo_Shared/Tools/Helper/ExternDllHelper.cs deleted file mode 100644 index a5d0e53d..00000000 --- a/src/Shared/HandyControlDemo_Shared/Tools/Helper/ExternDllHelper.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Runtime.InteropServices; - -namespace HandyControlDemo.Tools -{ - internal class ExternDllHelper - { - private const string Winmm = "winmm.dll"; - - [DllImport(Winmm, EntryPoint = "mciSendString", CharSet = CharSet.Auto)] - public static extern int MciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback); - } -} \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/Tools/Helper/Win32Helper.cs b/src/Shared/HandyControlDemo_Shared/Tools/Helper/Win32Helper.cs index 0f8aeb4b..c8929ae9 100644 --- a/src/Shared/HandyControlDemo_Shared/Tools/Helper/Win32Helper.cs +++ b/src/Shared/HandyControlDemo_Shared/Tools/Helper/Win32Helper.cs @@ -7,5 +7,8 @@ namespace HandyControlDemo.Tools { [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); } } diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml.cs b/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml.cs index 7826a952..804ed03d 100644 --- a/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml.cs +++ b/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml.cs @@ -5,6 +5,7 @@ using System.Windows.Controls.Primitives; using HandyControl.Data; using HandyControl.Tools.Extension; using HandyControlDemo.Data; +using HandyControlDemo.ViewModel; namespace HandyControlDemo.UserControl @@ -24,6 +25,7 @@ namespace HandyControlDemo.UserControl if (e.AddedItems.Count == 0) return; if (e.AddedItems[0] is DemoInfoModel demoInfo) { + ViewModelLocator.Instance.Main.DemoInfoCurrent = demoInfo; var selectedIndex = demoInfo.SelectedIndex; demoInfo.SelectedIndex = -1; demoInfo.SelectedIndex = selectedIndex; diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Main/MainContent.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Main/MainContent.xaml index efe7f50e..f7b4df9d 100644 --- a/src/Shared/HandyControlDemo_Shared/UserControl/Main/MainContent.xaml +++ b/src/Shared/HandyControlDemo_Shared/UserControl/Main/MainContent.xaml @@ -1,5 +1,7 @@  @@ -10,7 +12,25 @@ - + + + + + + + + + + + + + + + + + + + diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Main/MainContent.xaml.cs b/src/Shared/HandyControlDemo_Shared/UserControl/Main/MainContent.xaml.cs index 253c684e..47361439 100644 --- a/src/Shared/HandyControlDemo_Shared/UserControl/Main/MainContent.xaml.cs +++ b/src/Shared/HandyControlDemo_Shared/UserControl/Main/MainContent.xaml.cs @@ -2,6 +2,7 @@ using GalaSoft.MvvmLight.Messaging; using HandyControl.Tools.Extension; using HandyControlDemo.Data; +using HandyControlDemo.ViewModel; namespace HandyControlDemo.UserControl @@ -13,6 +14,8 @@ namespace HandyControlDemo.UserControl { private bool _isFull; + private string _currentDemoKey; + public MainContent() { InitializeComponent(); @@ -43,5 +46,25 @@ namespace HandyControlDemo.UserControl PresenterMain.Margin = new Thickness(0, 0, 0, 10); } } + + private void DrawerCode_OnOpened(object sender, RoutedEventArgs e) + { + var typeKey = ViewModelLocator.Instance.Main.DemoInfoCurrent.Key; + var demoKey = ViewModelLocator.Instance.Main.DemoItemCurrent.TargetCtlName; + if (Equals(_currentDemoKey, demoKey)) return; + _currentDemoKey = demoKey; + + if (ViewModelLocator.Instance.Main.SubContent is FrameworkElement demoCtl) + { + var xamlPath = $"UserControl/{typeKey}/{demoCtl.GetType().Name}.xaml"; + var dc = demoCtl.DataContext; + var dcTypeName = dc.GetType().Name; + var vmPath = $"ViewModel/{dcTypeName}"; + + EditorXaml.Text = DemoHelper.GetCode(xamlPath); + EditorCs.Text = DemoHelper.GetCode($"{xamlPath}.cs"); + EditorVm.Text = DemoHelper.GetCode($"{vmPath}.cs"); + } + } } } \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/ViewModel/Basic/ChatBoxViewModel.cs b/src/Shared/HandyControlDemo_Shared/ViewModel/Basic/ChatBoxViewModel.cs index 7fc48de2..e19fd556 100644 --- a/src/Shared/HandyControlDemo_Shared/ViewModel/Basic/ChatBoxViewModel.cs +++ b/src/Shared/HandyControlDemo_Shared/ViewModel/Basic/ChatBoxViewModel.cs @@ -104,12 +104,12 @@ namespace HandyControlDemo.ViewModel private void StartRecord() { - ExternDllHelper.MciSendString("set wave bitpersample 8", "", 0, 0); - ExternDllHelper.MciSendString("set wave samplespersec 20000", "", 0, 0); - ExternDllHelper.MciSendString("set wave channels 2", "", 0, 0); - ExternDllHelper.MciSendString("set wave format tag pcm", "", 0, 0); - ExternDllHelper.MciSendString("open new type WAVEAudio alias movie", "", 0, 0); - ExternDllHelper.MciSendString("record movie", "", 0, 0); + Win32Helper.MciSendString("set wave bitpersample 8", "", 0, 0); + Win32Helper.MciSendString("set wave samplespersec 20000", "", 0, 0); + Win32Helper.MciSendString("set wave channels 2", "", 0, 0); + Win32Helper.MciSendString("set wave format tag pcm", "", 0, 0); + Win32Helper.MciSendString("open new type WAVEAudio alias movie", "", 0, 0); + Win32Helper.MciSendString("record movie", "", 0, 0); _stopwatch.Reset(); _stopwatch.Start(); @@ -135,9 +135,9 @@ namespace HandyControlDemo.ViewModel var cachePath = $"{AudioCachePath}\\{Guid.NewGuid().ToString()}"; var cachePathWithQuotes = $"\"{cachePath}\""; - ExternDllHelper.MciSendString("stop movie", "", 0, 0); - ExternDllHelper.MciSendString($"save movie {cachePathWithQuotes}", "", 0, 0); - ExternDllHelper.MciSendString("close movie", "", 0, 0); + Win32Helper.MciSendString("stop movie", "", 0, 0); + Win32Helper.MciSendString($"save movie {cachePathWithQuotes}", "", 0, 0); + Win32Helper.MciSendString("close movie", "", 0, 0); _stopwatch.Stop(); diff --git a/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs b/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs index 755d2e9e..711ec606 100644 --- a/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs +++ b/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs @@ -34,11 +34,6 @@ namespace HandyControlDemo.ViewModel /// private List _demoInfoList; - /// - /// 当前选中的demo项 - /// - private DemoItemModel _demoItemCurrent; - #endregion public MainViewModel(DataService dataService) @@ -54,7 +49,7 @@ namespace HandyControlDemo.ViewModel Messenger.Default.Register(this, MessageToken.ClearLeftSelected, obj => { - _demoItemCurrent = null; + DemoItemCurrent = null; foreach (var item in DemoInfoList) { item.SelectedIndex = -1; @@ -67,6 +62,13 @@ namespace HandyControlDemo.ViewModel #region 属性 + /// + /// 当前选中的demo项 + /// + public DemoItemModel DemoItemCurrent { get; private set; } + + public DemoInfoModel DemoInfoCurrent { get; set; } + /// /// 子内容 /// @@ -141,9 +143,9 @@ namespace HandyControlDemo.ViewModel if (e.AddedItems.Count == 0) return; if (e.AddedItems[0] is DemoItemModel item) { - if (Equals(_demoItemCurrent, item)) return; + if (Equals(DemoItemCurrent, item)) return; - _demoItemCurrent = item; + DemoItemCurrent = item; ContentTitle = item.Name; var obj = AssemblyHelper.ResolveByKey(item.TargetCtlName); var ctl = obj ?? AssemblyHelper.CreateInternalInstance($"UserControl.{item.TargetCtlName}"); diff --git a/src/Shared/HandyControl_Shared/Controls/Other/Drawer.cs b/src/Shared/HandyControl_Shared/Controls/Other/Drawer.cs index c99d5e16..244e7ca6 100644 --- a/src/Shared/HandyControl_Shared/Controls/Other/Drawer.cs +++ b/src/Shared/HandyControl_Shared/Controls/Other/Drawer.cs @@ -68,6 +68,26 @@ namespace HandyControl.Controls } } + public static readonly RoutedEvent OpenedEvent = + EventManager.RegisterRoutedEvent("Opened", RoutingStrategy.Bubble, + typeof(RoutedEventHandler), typeof(Drawer)); + + public event RoutedEventHandler Opened + { + add => AddHandler(OpenedEvent, value); + remove => RemoveHandler(OpenedEvent, value); + } + + public static readonly RoutedEvent ClosedEvent = + EventManager.RegisterRoutedEvent("Closed", RoutingStrategy.Bubble, + typeof(RoutedEventHandler), typeof(Drawer)); + + public event RoutedEventHandler Closed + { + add => AddHandler(ClosedEvent, value); + remove => RemoveHandler(ClosedEvent, value); + } + public static readonly DependencyProperty IsOpenProperty = DependencyProperty.Register( "IsOpen", typeof(bool), typeof(Drawer), new FrameworkPropertyMetadata(ValueBoxes.FalseBox, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnIsOpenChanged)); @@ -217,6 +237,11 @@ namespace HandyControl.Controls { _windowContentElement.SetCurrentValue(RenderTransformOriginProperty, _contentRenderTransformOrigin); _layer.Remove(_container); + RaiseEvent(new RoutedEventArgs(ClosedEvent, this)); + } + else + { + RaiseEvent(new RoutedEventArgs(OpenedEvent, this)); } } @@ -284,7 +309,6 @@ namespace HandyControl.Controls Storyboard.SetTargetProperty(drawerAnimation, new PropertyPath(_animationPropertyName)); _storyboard.Children.Add(drawerAnimation); } - _storyboard.Begin(); } From a943927a24046de7594f396b586f1e3e08b278fb Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Wed, 19 Feb 2020 22:40:53 +0800 Subject: [PATCH 04/12] update style of demo app --- .../HandyControlDemo_Core30.csproj | 3 + .../Themes/Styles/Base/TreeViewBaseStyle.xaml | 2 +- src/HandyControl_Core_30.sln | 7 + src/HandyControl_Net_40.sln | 7 + src/HandyControl_Net_GE45.sln | 43 ++- .../HandyControlDemo_Net_40.csproj | 3 + .../Themes/Styles/Base/TreeViewBaseStyle.xaml | 2 +- .../HandyControlDemo_Net_GE45.csproj | 3 + .../Themes/Styles/Base/TreeViewBaseStyle.xaml | 2 +- .../HandyControlDemo_Shared/App.xaml.cs | 2 - .../Data/MessageToken.cs | 2 +- .../Data/MessageToken.tt | 2 +- .../HandyControlDemo_Shared.projitems | 6 +- .../HandyControlDemo_Shared/MainWindow.xaml | 13 +- .../MainWindow.xaml.cs | 2 +- .../Properties/Langs/Lang.Designer.cs | 9 + .../Properties/Langs/Lang.en.resx | 6 +- .../Properties/Langs/Lang.fa.resx | 6 +- .../Properties/Langs/Lang.fr.resx | 6 +- .../Properties/Langs/Lang.ko-KR.resx | 6 +- .../Properties/Langs/Lang.resx | 6 +- .../Resources/Img/cloud.png | Bin 0 -> 56907 bytes .../Resources/Themes/Basic/Brushes.xaml | 8 + .../Resources/Themes/Styles/Style.xaml | 1 + .../UserControl/Main/LeftMainContent.xaml | 17 +- .../UserControl/Main/MainContent.xaml | 67 ++-- .../UserControl/Main/NoUserContent.xaml | 2 +- .../UserControl/Main/OverView.xaml | 363 ------------------ .../UserControl/Main/OverView.xaml.cs | 18 - .../UserControl/Main/PracticalDemo.cs | 10 + .../UserControl/Main/PracticalDemo.xaml | 8 + .../UserControl/Styles/ExpanderDemoCtl.xaml | 8 +- .../ViewModel/Main/MainViewModel.cs | 14 +- .../Themes/Styles/Base/ExpanderBaseStyle.xaml | 6 +- .../Themes/Styles/Base/ListBoxBaseStyle.xaml | 2 +- 35 files changed, 177 insertions(+), 485 deletions(-) create mode 100644 src/Shared/HandyControlDemo_Shared/Resources/Img/cloud.png delete mode 100644 src/Shared/HandyControlDemo_Shared/UserControl/Main/OverView.xaml delete mode 100644 src/Shared/HandyControlDemo_Shared/UserControl/Main/OverView.xaml.cs create mode 100644 src/Shared/HandyControlDemo_Shared/UserControl/Main/PracticalDemo.cs create mode 100644 src/Shared/HandyControlDemo_Shared/UserControl/Main/PracticalDemo.xaml diff --git a/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj b/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj index 131d6014..72bdb306 100644 --- a/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj +++ b/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj @@ -468,6 +468,9 @@ Resources\Img\LeftMainContent\frame_16xLG.png + + Resources\Img\cloud.png + diff --git a/src/Core_30/HandyControl_Core_30/Themes/Styles/Base/TreeViewBaseStyle.xaml b/src/Core_30/HandyControl_Core_30/Themes/Styles/Base/TreeViewBaseStyle.xaml index b556d943..d50d832c 100644 --- a/src/Core_30/HandyControl_Core_30/Themes/Styles/Base/TreeViewBaseStyle.xaml +++ b/src/Core_30/HandyControl_Core_30/Themes/Styles/Base/TreeViewBaseStyle.xaml @@ -51,7 +51,7 @@ - + diff --git a/src/HandyControl_Core_30.sln b/src/HandyControl_Core_30.sln index d41e6f27..bd8c0cdd 100644 --- a/src/HandyControl_Core_30.sln +++ b/src/HandyControl_Core_30.sln @@ -15,6 +15,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControl_Core_30", "Cor EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControlDemo_Core30", "Core_30\HandyControlDemo_Core_30\HandyControlDemo_Core30.csproj", "{BF712555-531A-4C8D-9AB5-3109DC178A8E}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControlDemo_Code", "Shared\HandyControlDemo_Code\HandyControlDemo_Code.csproj", "{D8A4748C-0500-4F63-BC47-3506658C68F7}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution Shared\HandyControl_Shared\HandyControl_Shared.projitems*{aac11083-faca-405d-9197-5c1212d65656}*SharedItemsImports = 13 @@ -33,6 +35,10 @@ Global {BF712555-531A-4C8D-9AB5-3109DC178A8E}.Debug|Any CPU.Build.0 = Debug|Any CPU {BF712555-531A-4C8D-9AB5-3109DC178A8E}.Release|Any CPU.ActiveCfg = Release|Any CPU {BF712555-531A-4C8D-9AB5-3109DC178A8E}.Release|Any CPU.Build.0 = Release|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug|Any CPU.ActiveCfg = Debug-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug|Any CPU.Build.0 = Debug-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release|Any CPU.ActiveCfg = Release-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release|Any CPU.Build.0 = Release-Net48|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -42,6 +48,7 @@ Global {C4694269-C9B8-45D5-87F8-D0088C532510} = {60DCDCCA-3902-49EB-BC24-488143BE832E} {A85722CF-CDF4-4164-94E4-EB71E543361A} = {7BB7D82E-48B1-4673-91B6-37D563A0A624} {BF712555-531A-4C8D-9AB5-3109DC178A8E} = {7BB7D82E-48B1-4673-91B6-37D563A0A624} + {D8A4748C-0500-4F63-BC47-3506658C68F7} = {60DCDCCA-3902-49EB-BC24-488143BE832E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {6C8B9B9F-B396-4C31-BA28-11BCB1ED94C5} diff --git a/src/HandyControl_Net_40.sln b/src/HandyControl_Net_40.sln index 60bcd427..e33e7cc8 100644 --- a/src/HandyControl_Net_40.sln +++ b/src/HandyControl_Net_40.sln @@ -15,6 +15,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControl_Net_40", "Net_ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControlDemo_Net_40", "Net_40\HandyControlDemo_Net_40\HandyControlDemo_Net_40.csproj", "{D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControlDemo_Code", "Shared\HandyControlDemo_Code\HandyControlDemo_Code.csproj", "{D8A4748C-0500-4F63-BC47-3506658C68F7}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution Shared\HandyControl_Shared\HandyControl_Shared.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 4 @@ -35,6 +37,10 @@ Global {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Debug|Any CPU.Build.0 = Debug|Any CPU {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release|Any CPU.ActiveCfg = Release|Any CPU {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}.Release|Any CPU.Build.0 = Release|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug|Any CPU.ActiveCfg = Debug-Net40|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug|Any CPU.Build.0 = Debug-Net40|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release|Any CPU.ActiveCfg = Release-Net40|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release|Any CPU.Build.0 = Release-Net40|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -44,6 +50,7 @@ Global {C4694269-C9B8-45D5-87F8-D0088C532510} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897} {32204503-2EF0-4681-AE13-AA1FEB6C658A} = {763DABFC-950A-4965-97CB-15C59A928401} {D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231} = {763DABFC-950A-4965-97CB-15C59A928401} + {D8A4748C-0500-4F63-BC47-3506658C68F7} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D4636382-1A18-4079-A3E7-054DD970F179} diff --git a/src/HandyControl_Net_GE45.sln b/src/HandyControl_Net_GE45.sln index b2e1b9ae..34b9d63d 100644 --- a/src/HandyControl_Net_GE45.sln +++ b/src/HandyControl_Net_GE45.sln @@ -15,6 +15,8 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "HandyControl_Shared", "Shar EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "HandyControlDemo_Shared", "Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.shproj", "{C4694269-C9B8-45D5-87F8-D0088C532510}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControlDemo_Code", "Shared\HandyControlDemo_Code\HandyControlDemo_Code.csproj", "{D8A4748C-0500-4F63-BC47-3506658C68F7}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution Shared\HandyControlDemo_Shared\HandyControlDemo_Shared.projitems*{9a7b52e6-94bb-4e7e-bb6a-7cf6761b79a7}*SharedItemsImports = 4 @@ -49,22 +51,38 @@ Global {DC966E3D-BCFF-4652-98CF-070E5494749A}.Release-Net47|Any CPU.Build.0 = Release-Net47|Any CPU {DC966E3D-BCFF-4652-98CF-070E5494749A}.Release-Net48|Any CPU.ActiveCfg = Release-Net48|Any CPU {DC966E3D-BCFF-4652-98CF-070E5494749A}.Release-Net48|Any CPU.Build.0 = Release-Net48|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net45|Any CPU.ActiveCfg = Debug-Net47|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net45|Any CPU.Build.0 = Debug-Net47|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net462|Any CPU.ActiveCfg = Debug-Net48|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net462|Any CPU.Build.0 = Debug-Net48|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net47|Any CPU.ActiveCfg = Debug-Net48|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net47|Any CPU.Build.0 = Debug-Net48|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net45|Any CPU.ActiveCfg = Debug-Net45|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net45|Any CPU.Build.0 = Debug-Net45|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net462|Any CPU.ActiveCfg = Debug-Net462|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net462|Any CPU.Build.0 = Debug-Net462|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net47|Any CPU.ActiveCfg = Debug-Net47|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net47|Any CPU.Build.0 = Debug-Net47|Any CPU {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net48|Any CPU.ActiveCfg = Debug-Net48|Any CPU {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net48|Any CPU.Build.0 = Debug-Net48|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net45|Any CPU.ActiveCfg = Release-Net48|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net45|Any CPU.Build.0 = Release-Net48|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net462|Any CPU.ActiveCfg = Release-Net48|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net462|Any CPU.Build.0 = Release-Net48|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net47|Any CPU.ActiveCfg = Release-Net48|Any CPU - {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net47|Any CPU.Build.0 = Release-Net48|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net45|Any CPU.ActiveCfg = Debug-Net45|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net45|Any CPU.Build.0 = Debug-Net45|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net462|Any CPU.ActiveCfg = Debug-Net462|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net462|Any CPU.Build.0 = Debug-Net462|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net47|Any CPU.ActiveCfg = Release-Net47|Any CPU + {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net47|Any CPU.Build.0 = Release-Net47|Any CPU {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net48|Any CPU.ActiveCfg = Release-Net48|Any CPU {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release-Net48|Any CPU.Build.0 = Release-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net45|Any CPU.ActiveCfg = Debug-Net45|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net45|Any CPU.Build.0 = Debug-Net45|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net462|Any CPU.ActiveCfg = Debug-Net462|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net462|Any CPU.Build.0 = Debug-Net462|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net47|Any CPU.ActiveCfg = Debug-Net47|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net47|Any CPU.Build.0 = Debug-Net47|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net48|Any CPU.ActiveCfg = Debug-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Debug-Net48|Any CPU.Build.0 = Debug-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net45|Any CPU.ActiveCfg = Release-Net45|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net45|Any CPU.Build.0 = Release-Net45|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net462|Any CPU.ActiveCfg = Release-Net462|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net462|Any CPU.Build.0 = Release-Net462|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net47|Any CPU.ActiveCfg = Release-Net47|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net47|Any CPU.Build.0 = Release-Net47|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net48|Any CPU.ActiveCfg = Release-Net48|Any CPU + {D8A4748C-0500-4F63-BC47-3506658C68F7}.Release-Net48|Any CPU.Build.0 = Release-Net48|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -74,6 +92,7 @@ Global {9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7} = {2F551C62-77F7-4FA5-8AD7-FCF53E92AE08} {AAC11083-FACA-405D-9197-5C1212D65656} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897} {C4694269-C9B8-45D5-87F8-D0088C532510} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897} + {D8A4748C-0500-4F63-BC47-3506658C68F7} = {0938270D-E9F0-489B-AF9E-5C5AD7C69897} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D4636382-1A18-4079-A3E7-054DD970F179} diff --git a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj index 52e82269..50bbc0a2 100644 --- a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj +++ b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj @@ -544,6 +544,9 @@ Resources\Img\LeftMainContent\frame_16xLG.png + + Resources\Img\cloud.png + diff --git a/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/TreeViewBaseStyle.xaml b/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/TreeViewBaseStyle.xaml index 6c9f43c3..deea89ce 100644 --- a/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/TreeViewBaseStyle.xaml +++ b/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/TreeViewBaseStyle.xaml @@ -51,7 +51,7 @@ - + diff --git a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj index 0d81c9b3..abe74897 100644 --- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj +++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj @@ -607,6 +607,9 @@ Resources\Img\LeftMainContent\frame_16xLG.png + + Resources\Img\cloud.png + diff --git a/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Base/TreeViewBaseStyle.xaml b/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Base/TreeViewBaseStyle.xaml index fd88df4e..16a204a8 100644 --- a/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Base/TreeViewBaseStyle.xaml +++ b/src/Net_GE45/HandyControl_Net_GE45/Themes/Styles/Base/TreeViewBaseStyle.xaml @@ -52,7 +52,7 @@ - + diff --git a/src/Shared/HandyControlDemo_Shared/App.xaml.cs b/src/Shared/HandyControlDemo_Shared/App.xaml.cs index 62d43bb1..6cc43843 100644 --- a/src/Shared/HandyControlDemo_Shared/App.xaml.cs +++ b/src/Shared/HandyControlDemo_Shared/App.xaml.cs @@ -71,8 +71,6 @@ namespace HandyControlDemo UpdateSkin(GlobalData.Config.Skin); } - ConfigHelper.Instance.SetWindowDefaultStyle(); - ConfigHelper.Instance.SetNavigationWindowDefaultStyle(); ConfigHelper.Instance.SetSystemVersionInfo(CommonHelper.GetSystemVersionInfo()); ServicePointManager.SecurityProtocol = (SecurityProtocolType)(SslProtocols)0x00000C00; diff --git a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs index 63e14bd3..bcc0bcbd 100644 --- a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs +++ b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs @@ -18,7 +18,7 @@ public static readonly string MainWindow = nameof(MainWindow); - public static readonly string OverView = nameof(OverView); + public static readonly string PracticalDemo = nameof(PracticalDemo); public static readonly string ProjectsView = nameof(ProjectsView); diff --git a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt index 9455d621..76cbb2b3 100644 --- a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt +++ b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt @@ -12,7 +12,7 @@ var messageList = new List "GrowlDemoPanel", "DialogDemoWindow", "MainWindow", - "OverView", + "PracticalDemo", "ProjectsView", "BlogsView", "WebsitesView", diff --git a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems index bc7d84b7..54536de4 100644 --- a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems +++ b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems @@ -250,8 +250,8 @@ ProjectsView.xaml - - OverView.xaml + + PracticalDemo.xaml ContributorsView.xaml @@ -761,7 +761,7 @@ Designer MSBuild:Compile - + Designer MSBuild:Compile diff --git a/src/Shared/HandyControlDemo_Shared/MainWindow.xaml b/src/Shared/HandyControlDemo_Shared/MainWindow.xaml index cf373d52..0e779e8a 100644 --- a/src/Shared/HandyControlDemo_Shared/MainWindow.xaml +++ b/src/Shared/HandyControlDemo_Shared/MainWindow.xaml @@ -1,4 +1,4 @@ - - + - + - - + + - + diff --git a/src/Shared/HandyControlDemo_Shared/MainWindow.xaml.cs b/src/Shared/HandyControlDemo_Shared/MainWindow.xaml.cs index b317b980..68635d9a 100644 --- a/src/Shared/HandyControlDemo_Shared/MainWindow.xaml.cs +++ b/src/Shared/HandyControlDemo_Shared/MainWindow.xaml.cs @@ -19,7 +19,7 @@ namespace HandyControlDemo base.OnInitialized(e); Messenger.Default.Send(true, MessageToken.FullSwitch); - Messenger.Default.Send(AssemblyHelper.CreateInternalInstance($"UserControl.{MessageToken.OverView}"), MessageToken.LoadShowContent); + Messenger.Default.Send(AssemblyHelper.CreateInternalInstance($"UserControl.{MessageToken.PracticalDemo}"), MessageToken.LoadShowContent); } protected override void OnClosing(CancelEventArgs e) diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs index 2354a8cc..bd30d1fd 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs @@ -1275,6 +1275,15 @@ namespace HandyControlDemo.Properties.Langs { } } + /// + /// 查找类似 实用例子 的本地化字符串。 + /// + public static string PracticalDemos { + get { + return ResourceManager.GetString("PracticalDemos", resourceCulture); + } + } + /// /// 查找类似 上一步 的本地化字符串。 /// diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx index bd530288..24edac67 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx @@ -576,9 +576,6 @@ SideMenu - - Overview - Grid @@ -738,4 +735,7 @@ Frame + + Practical demos + \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx index 1fbed098..73fd70c6 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx @@ -576,9 +576,6 @@ SideMenu - - دید کلی - Grid @@ -738,4 +735,7 @@ Frame + + Practical demos + \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx index bdec38d6..c8051c46 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx @@ -576,9 +576,6 @@ SideMenu - - Vue d'ensemble - Grid @@ -738,4 +735,7 @@ Frame + + Practical demos + \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ko-KR.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ko-KR.resx index 42566978..9715066f 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ko-KR.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ko-KR.resx @@ -465,9 +465,6 @@ OutlineText - - Overview - Pagination @@ -738,4 +735,7 @@ Frame + + Practical demos + \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx index 0474931a..a64229fb 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx @@ -579,9 +579,6 @@ 侧边菜单 - - 概览 - 栅格 @@ -738,4 +735,7 @@ 导航框架 + + 实用例子 + \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/Resources/Img/cloud.png b/src/Shared/HandyControlDemo_Shared/Resources/Img/cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..82a215efcbb6d8596b06417cb1b2eeb1d67a3807 GIT binary patch literal 56907 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 literal 0 HcmV?d00001 diff --git a/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Brushes.xaml b/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Brushes.xaml index 95654be8..721c9126 100644 --- a/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Brushes.xaml +++ b/src/Shared/HandyControlDemo_Shared/Resources/Themes/Basic/Brushes.xaml @@ -5,6 +5,14 @@ + + + + + + + + diff --git a/src/Shared/HandyControlDemo_Shared/Resources/Themes/Styles/Style.xaml b/src/Shared/HandyControlDemo_Shared/Resources/Themes/Styles/Style.xaml index 44a46462..3123a4db 100644 --- a/src/Shared/HandyControlDemo_Shared/Resources/Themes/Styles/Style.xaml +++ b/src/Shared/HandyControlDemo_Shared/Resources/Themes/Styles/Style.xaml @@ -39,6 +39,7 @@ diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml index 7c3dc3d6..909f10d9 100644 --- a/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml +++ b/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml @@ -3,10 +3,13 @@ xmlns:command="http://www.galasoft.ch/mvvmlight" x:Class="HandyControlDemo.UserControl.LeftMainContent" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - Background="{Binding Background,RelativeSource={RelativeSource AncestorType=Window}}" + Background="{DynamicResource RegionBrush}" xmlns:hc="https://handyorg.github.io/handycontrol" xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + Margin="16" + CornerRadius="10" + Effect="{StaticResource EffectShadow4}"> -