diff --git a/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019.csproj b/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019.csproj
index 621606c8..a652ad34 100644
--- a/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019.csproj
+++ b/Installers/VS2019/HandyControl_VS2019/HandyControl_VS2019.csproj
@@ -53,7 +53,11 @@
Always
true
-
+
+ Always
+ true
+
+
Always
true
diff --git a/Installers/VS2019/HandyControl_VS2019/Packages/handycontrol.1.5.5.nupkg b/Installers/VS2019/HandyControl_VS2019/Packages/handycontrol.1.5.5.nupkg
deleted file mode 100644
index 9f36d145..00000000
Binary files a/Installers/VS2019/HandyControl_VS2019/Packages/handycontrol.1.5.5.nupkg and /dev/null differ
diff --git a/Installers/VS2019/HandyControl_VS2019/Packages/handycontrol.2.0.0.nupkg b/Installers/VS2019/HandyControl_VS2019/Packages/handycontrol.2.0.0.nupkg
new file mode 100644
index 00000000..b442d002
Binary files /dev/null and b/Installers/VS2019/HandyControl_VS2019/Packages/handycontrol.2.0.0.nupkg differ
diff --git a/Installers/VS2019/HandyControl_VS2019/ProjectTemplates/WpfApp.zip b/Installers/VS2019/HandyControl_VS2019/ProjectTemplates/WpfApp.zip
index ee36df8a..4d7cadf9 100644
Binary files a/Installers/VS2019/HandyControl_VS2019/ProjectTemplates/WpfApp.zip and b/Installers/VS2019/HandyControl_VS2019/ProjectTemplates/WpfApp.zip differ
diff --git a/Installers/VS2019/HandyControl_VS2019/ProjectTemplates/WpfCoreApp.zip b/Installers/VS2019/HandyControl_VS2019/ProjectTemplates/WpfCoreApp.zip
new file mode 100644
index 00000000..073b19ef
Binary files /dev/null and b/Installers/VS2019/HandyControl_VS2019/ProjectTemplates/WpfCoreApp.zip differ
diff --git a/Installers/VS2019/HandyControl_VS2019/Properties/AssemblyInfo.cs b/Installers/VS2019/HandyControl_VS2019/Properties/AssemblyInfo.cs
index d4aae7d0..5ecbbb92 100644
--- a/Installers/VS2019/HandyControl_VS2019/Properties/AssemblyInfo.cs
+++ b/Installers/VS2019/HandyControl_VS2019/Properties/AssemblyInfo.cs
@@ -10,5 +10,5 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
-[assembly: AssemblyVersion("1.5.5")]
-[assembly: AssemblyFileVersion("1.5.5")]
\ No newline at end of file
+[assembly: AssemblyVersion("2.0.0")]
+[assembly: AssemblyFileVersion("2.0.0")]
\ No newline at end of file
diff --git a/Installers/VS2019/HandyControl_VS2019/source.extension.vsixmanifest b/Installers/VS2019/HandyControl_VS2019/source.extension.vsixmanifest
index 4701c027..4f081ca5 100644
--- a/Installers/VS2019/HandyControl_VS2019/source.extension.vsixmanifest
+++ b/Installers/VS2019/HandyControl_VS2019/source.extension.vsixmanifest
@@ -1,7 +1,7 @@
-
+
HandyControl for VS2019
This VSIX Project will help people initialize a HandyControl project.
https://handyorg.github.io/handycontrol
@@ -26,5 +26,6 @@
+
diff --git a/README.md b/README.md
index 687eaa26..13d7245e 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@

-   [](https://www.nuget.org/packages/HandyControl) [](https://ci.appveyor.com/project/handyorg/handycontrol) [](https://gitter.im/HandyControl/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](//shang.qq.com/wpa/qunwpa?idkey=a571e5553c9d41e49c4f22f3a8b2865451497a795ff281fedf3285def247efc1)
+   [](https://www.nuget.org/packages/HandyControl) [](https://ci.appveyor.com/project/handyorg/handycontrol) [](https://gitter.im/HandyControl/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](//shang.qq.com/wpa/qunwpa?idkey=a571e5553c9d41e49c4f22f3a8b2865451497a795ff281fedf3285def247efc1)
[](https://github.com/ghost1372/HandyControl/wiki)
# Welcome to HandyControl
@@ -63,6 +63,10 @@ Step 4:enjoy coding
## Latest examples
+### ButtonGroup
+
+
+
### Grid

@@ -79,12 +83,12 @@ Step 4:enjoy coding

+## History publication
+
### WaveProgressBar

-## History publication
-
### Badge

diff --git a/Resources/ButtonGroup.png b/Resources/ButtonGroup.png
new file mode 100644
index 00000000..25041947
Binary files /dev/null and b/Resources/ButtonGroup.png differ
diff --git a/Resources/RadioButton.png b/Resources/RadioButton.png
index 4641a6f8..4f1308e5 100644
Binary files a/Resources/RadioButton.png and b/Resources/RadioButton.png differ
diff --git a/doc/source/_posts/home.md b/doc/source/_posts/home.md
index 34ebe0d8..cec7679d 100644
--- a/doc/source/_posts/home.md
+++ b/doc/source/_posts/home.md
@@ -4,8 +4,6 @@ title: 欢迎来到HandyOrg
HandyOrg的宗旨是为用户提供最简单的API。
-目前组织成员只有一人。
-
我们一直期待着有更多的同学加入。
我们的入坑要求:
diff --git a/doc/source/handycontrol/attach/backgroundSwitchElement/index.md b/doc/source/handycontrol/attach/backgroundSwitchElement/index.md
index ca12ad62..2fa310da 100644
--- a/doc/source/handycontrol/attach/backgroundSwitchElement/index.md
+++ b/doc/source/handycontrol/attach/backgroundSwitchElement/index.md
@@ -1,5 +1,42 @@
---
-title: 建设中
+title: BackgroundSwitchElement 可切换背景的元素
---
-建设中
\ No newline at end of file
+# 准备工作
+添加`HandyControl`命名空间
+{% code %}
+xmlns:hc="https://handyorg.github.io/handycontrol"
+{% endcode %}
+
+## MouseHoverBackground `鼠标悬浮背景色`
+
+该附加属性常用于设置控件在鼠标悬浮时的背景色,在控件的样式或者模板中我们添加如下的触发器代码:
+
+{% code %}
+
+
+
+{% endcode %}
+
+随后我们就可以使用该属性了:
+
+{% code %}
+<目标控件 controls:BackgroundSwitchElement.MouseHoverBackground ="Blue"/>
+{% endcode %}
+
+## MouseDownBackground `鼠标按下背景色`
+
+该附加属性常用于设置控件在鼠标按下时的背景色,在控件的样式或者模板中我们添加如下的触发器代码:
+
+{% code %}
+
+
+
+{% endcode %}
+
+随后我们就可以使用该属性了:
+
+{% code %}
+<目标控件 controls:BackgroundSwitchElement.MouseDownBackground ="Yellow"/>
+{% endcode %}
\ No newline at end of file
diff --git a/doc/source/handycontrol/tnx/index.md b/doc/source/handycontrol/tnx/index.md
index 671466f7..129c2af4 100644
--- a/doc/source/handycontrol/tnx/index.md
+++ b/doc/source/handycontrol/tnx/index.md
@@ -4,7 +4,7 @@ title: 鸣谢
# 感谢以下Coder提供代码贡献
-




+





# 感谢以下User提供使用建议
diff --git a/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj b/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj
index b87ba43d..d384531c 100644
--- a/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj
+++ b/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj
@@ -5,10 +5,12 @@
true
HandyControlDemo
HandyControlDemo
- 1.5.5
+ 2.0.0
..\..\Shared\HandyControlDemo_Shared\Resources\Img\icon.ico
Debug;Release
Copyright © HandyOrg 2018-2019
+ 2.0.0.0
+ 2.0.0.0
TRACE;Core
@@ -350,6 +352,9 @@
Resources\Img\LeftMainContent\brackets_Square_16xLG.png
+
+ Resources\Img\LeftMainContent\ButtonGroup_16x.png
+
diff --git a/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj b/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj
index 9d2421a4..f5711c96 100644
--- a/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj
+++ b/src/Core_30/HandyControl_Core_30/HandyControl_Core_30.csproj
@@ -4,8 +4,8 @@
true
HandyControl
HandyControl
- 1.5.5
- 1.5.5.0
+ 2.0.0
+ 2.0.0.0
false
false
Copyright © HandyOrg 2018-2019
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 61536a9e..82e5ee46 100644
--- a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
+++ b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
@@ -395,6 +395,9 @@
TextTemplatingFileGenerator
MessageToken.cs
+
+ Resources\Img\LeftMainContent\ButtonGroup_16x.png
+
Resources\Img\LeftMainContent\brackets_Square_16xLG.png
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 57947a1f..36a1fec2 100644
--- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
@@ -457,6 +457,9 @@
TextTemplatingFileGenerator
MessageToken.cs
+
+ Resources\Img\LeftMainContent\ButtonGroup_16x.png
+
Resources\Img\LeftMainContent\brackets_Square_16xLG.png
diff --git a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
index 96b1b1bc..a9df5f10 100644
--- a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj
@@ -62,7 +62,7 @@
pdbonly
true
- bin\Release\
+ bin\Release\Net45\
TRACE;netle45
prompt
4
@@ -73,7 +73,7 @@
pdbonly
true
- bin\Release\
+ bin\Release\Net462\
TRACE
prompt
4
@@ -84,7 +84,7 @@
pdbonly
true
- bin\Release\
+ bin\Release\Net47\
TRACE
prompt
4
@@ -95,7 +95,7 @@
pdbonly
true
- bin\Release\
+ bin\Release\Net48\
TRACE
prompt
4
diff --git a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs
index 10cb3212..72b30cf2 100644
--- a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs
+++ b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.cs
@@ -98,6 +98,8 @@
public static readonly string RangeSliderDemoCtl = nameof(RangeSliderDemoCtl);
+ public static readonly string ButtonGroupDemoCtl = nameof(ButtonGroupDemoCtl);
+
public static readonly string ButtonDemoCtl = nameof(ButtonDemoCtl);
public static readonly string RepeatButtonDemoCtl = nameof(RepeatButtonDemoCtl);
diff --git a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt
index 23421817..56b9b0f5 100644
--- a/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt
+++ b/src/Shared/HandyControlDemo_Shared/Data/MessageToken.tt
@@ -51,7 +51,8 @@ var controlList = new List
"DialogDemoCtl",
"SideMenuDemoCtl",
"GridDemoCtl",
- "RangeSliderDemoCtl"
+ "RangeSliderDemoCtl",
+ "ButtonGroupDemoCtl"
};
var styleList = new List
{
diff --git a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
index 86a11012..8f0e0adb 100644
--- a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
+++ b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
@@ -56,6 +56,9 @@
BadgeDemoCtl.xaml
+
+ ButtonGroupDemoCtl.xaml
+
CalendarWithClockDemoCtl.xaml
@@ -413,6 +416,10 @@
Designer
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
Designer
MSBuild:Compile
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/AssemblyInfo.cs b/src/Shared/HandyControlDemo_Shared/Properties/AssemblyInfo.cs
index 2cbdb17c..e13e70bb 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/AssemblyInfo.cs
+++ b/src/Shared/HandyControlDemo_Shared/Properties/AssemblyInfo.cs
@@ -13,5 +13,5 @@ using System.Windows;
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
-[assembly: AssemblyVersion("1.5.5")]
+[assembly: AssemblyVersion("2.0.0")]
#endif
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
index d4b6a070..14840212 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
@@ -177,6 +177,15 @@ namespace HandyControlDemo.Properties.Langs {
}
}
+ ///
+ /// 查找类似 按钮组 的本地化字符串。
+ ///
+ public static string ButtonGroup {
+ get {
+ return ResourceManager.GetString("ButtonGroup", resourceCulture);
+ }
+ }
+
///
/// 查找类似 日历 的本地化字符串。
///
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
index 68dc57fe..c16cb5c0 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
@@ -618,4 +618,7 @@
Off
+
+ ButtonGroup
+
\ 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 84a43c24..3e44c0b1 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx
@@ -618,4 +618,7 @@
关
+
+ 按钮组
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/ButtonGroup_16x.png b/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/ButtonGroup_16x.png
new file mode 100644
index 00000000..e1e3b904
Binary files /dev/null and b/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/ButtonGroup_16x.png differ
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/ButtonGroupDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/ButtonGroupDemoCtl.xaml
new file mode 100644
index 00000000..dd6faccd
--- /dev/null
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/ButtonGroupDemoCtl.xaml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/ButtonGroupDemoCtl.xaml.cs b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/ButtonGroupDemoCtl.xaml.cs
new file mode 100644
index 00000000..833fc39d
--- /dev/null
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/ButtonGroupDemoCtl.xaml.cs
@@ -0,0 +1,40 @@
+using System.Windows;
+using System.Windows.Media.Imaging;
+
+namespace HandyControlDemo.UserControl
+{
+ public partial class ButtonGroupDemoCtl
+ {
+ public ButtonGroupDemoCtl()
+ {
+ InitializeComponent();
+ }
+
+ 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 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 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);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml
index ebcdc91b..34e51788 100644
--- a/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Main/LeftMainContent.xaml
@@ -210,6 +210,11 @@
+
+
+
+
+
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Main/OverView.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Main/OverView.xaml
index e903a4e7..48031c00 100644
--- a/src/Shared/HandyControlDemo_Shared/UserControl/Main/OverView.xaml
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Main/OverView.xaml
@@ -58,31 +58,31 @@
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Styles/RadioButtonDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Styles/RadioButtonDemoCtl.xaml
index 2b5e794b..6f886ded 100644
--- a/src/Shared/HandyControlDemo_Shared/UserControl/Styles/RadioButtonDemoCtl.xaml
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Styles/RadioButtonDemoCtl.xaml
@@ -20,31 +20,31 @@
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
diff --git a/src/Shared/HandyControlDemo_Shared/Window/AboutWindow.xaml b/src/Shared/HandyControlDemo_Shared/Window/AboutWindow.xaml
index b0e301a8..cc46e5a7 100644
--- a/src/Shared/HandyControlDemo_Shared/Window/AboutWindow.xaml
+++ b/src/Shared/HandyControlDemo_Shared/Window/AboutWindow.xaml
@@ -17,8 +17,8 @@
Width="340"
Height="220">
-
-
+
+
diff --git a/src/Shared/HandyControl_Shared/Controls/Other/RadioGroup.cs b/src/Shared/HandyControl_Shared/Controls/Other/ButtonGroup.cs
similarity index 71%
rename from src/Shared/HandyControl_Shared/Controls/Other/RadioGroup.cs
rename to src/Shared/HandyControl_Shared/Controls/Other/ButtonGroup.cs
index 86a22690..dd190f61 100644
--- a/src/Shared/HandyControl_Shared/Controls/Other/RadioGroup.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Other/ButtonGroup.cs
@@ -1,17 +1,16 @@
using System.Windows;
using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
using HandyControl.Tools;
namespace HandyControl.Controls
{
- public class RadioGroup : ItemsControl
+ public class ButtonGroup : ItemsControl
{
- protected override DependencyObject GetContainerForItemOverride() => new RadioButton();
-
- protected override bool IsItemItsOwnContainerOverride(object item) => item is RadioButton;
+ protected override bool IsItemItsOwnContainerOverride(object item) => item is Button || item is RadioButton || item is ToggleButton;
public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register(
- "Orientation", typeof(Orientation), typeof(RadioGroup), new PropertyMetadata(default(Orientation)));
+ "Orientation", typeof(Orientation), typeof(ButtonGroup), new PropertyMetadata(default(Orientation)));
public Orientation Orientation
{
@@ -20,7 +19,7 @@ namespace HandyControl.Controls
}
public static readonly DependencyProperty ItemStyleSelectorProperty = DependencyProperty.Register(
- "ItemStyleSelector", typeof(StyleSelector), typeof(RadioGroup), new PropertyMetadata(new RadioGroupItemStyleSelector()));
+ "ItemStyleSelector", typeof(StyleSelector), typeof(ButtonGroup), new PropertyMetadata(new ButtonGroupItemStyleSelector()));
public StyleSelector ItemStyleSelector
{
@@ -35,9 +34,9 @@ namespace HandyControl.Controls
var count = Items.Count;
for (var i = 0; i < count; i++)
{
- var item = (RadioButton)Items[i];
+ var item = (ButtonBase)Items[i];
item.Style = ItemStyleSelector?.SelectStyle(item, this);
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Shared/HandyControl_Shared/Controls/Window/MessageBox.cs b/src/Shared/HandyControl_Shared/Controls/Window/MessageBox.cs
index 4d688cd8..f5d6a43e 100644
--- a/src/Shared/HandyControl_Shared/Controls/Window/MessageBox.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Window/MessageBox.cs
@@ -1,5 +1,6 @@
using System;
using System.ComponentModel;
+using System.Diagnostics.CodeAnalysis;
using System.Media;
using System.Text;
using System.Windows;
@@ -14,6 +15,7 @@ namespace HandyControl.Controls
///
/// 消息框
///
+ [SuppressMessage("ReSharper", "RedundantDelegateCreation")]
public sealed class MessageBox : Window
{
private MessageBoxResult _messageBoxResult = MessageBoxResult.Cancel;
@@ -31,7 +33,7 @@ namespace HandyControl.Controls
public string Message
{
- get => (string) GetValue(MessageProperty);
+ get => (string)GetValue(MessageProperty);
set => SetValue(MessageProperty, value);
}
@@ -40,7 +42,7 @@ namespace HandyControl.Controls
public Geometry Image
{
- get => (Geometry) GetValue(ImageProperty);
+ get => (Geometry)GetValue(ImageProperty);
set => SetValue(ImageProperty, value);
}
@@ -49,7 +51,7 @@ namespace HandyControl.Controls
public Brush ImageBrush
{
- get => (Brush) GetValue(ImageBrushProperty);
+ get => (Brush)GetValue(ImageBrushProperty);
set => SetValue(ImageBrushProperty, value);
}
@@ -58,7 +60,7 @@ namespace HandyControl.Controls
public bool ShowImage
{
- get => (bool) GetValue(ShowImageProperty);
+ get => (bool)GetValue(ShowImageProperty);
set => SetValue(ShowImageProperty, value);
}
@@ -139,18 +141,7 @@ namespace HandyControl.Controls
public static MessageBoxResult Success(string messageBoxText, string caption = null)
{
MessageBox messageBox = null;
-#if netle40
Application.Current.Dispatcher.Invoke(new Action(() =>
- {
- messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.None, MessageBoxResult.OK);
- SetButtonStatus(messageBox, MessageBoxButton.OK);
- messageBox.ShowImage = true;
- messageBox.Image = ResourceHelper.GetResource(ResourceToken.SuccessGeometry);
- messageBox.ImageBrush = ResourceHelper.GetResource(ResourceToken.SuccessBrush);
- messageBox.ShowDialog();
- }));
-#else
- Application.Current.Dispatcher.Invoke(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.None, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK);
@@ -159,8 +150,7 @@ namespace HandyControl.Controls
messageBox.ImageBrush = ResourceHelper.GetResource(ResourceToken.SuccessBrush);
SystemSounds.Asterisk.Play();
messageBox.ShowDialog();
- });
-#endif
+ }));
return messageBox._messageBoxResult;
}
@@ -173,24 +163,14 @@ namespace HandyControl.Controls
public static MessageBoxResult Info(string messageBoxText, string caption = null)
{
MessageBox messageBox = null;
-#if netle40
Application.Current.Dispatcher.Invoke(new Action(() =>
- {
- messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
- SetButtonStatus(messageBox, MessageBoxButton.OK);
- SetImage(messageBox, MessageBoxImage.Information);
- messageBox.ShowDialog();
- }));
-#else
- Application.Current.Dispatcher.Invoke(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK);
SetImage(messageBox, MessageBoxImage.Information);
SystemSounds.Asterisk.Play();
messageBox.ShowDialog();
- });
-#endif
+ }));
return messageBox._messageBoxResult;
}
@@ -203,24 +183,14 @@ namespace HandyControl.Controls
public static MessageBoxResult Warning(string messageBoxText, string caption = null)
{
MessageBox messageBox = null;
-#if netle40
Application.Current.Dispatcher.Invoke(new Action(() =>
- {
- messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK);
- SetButtonStatus(messageBox, MessageBoxButton.OK);
- SetImage(messageBox, MessageBoxImage.Warning);
- messageBox.ShowDialog();
- }));
-#else
- Application.Current.Dispatcher.Invoke(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK);
SetImage(messageBox, MessageBoxImage.Warning);
SystemSounds.Asterisk.Play();
messageBox.ShowDialog();
- });
-#endif
+ }));
return messageBox._messageBoxResult;
}
@@ -233,24 +203,14 @@ namespace HandyControl.Controls
public static MessageBoxResult Error(string messageBoxText, string caption = null)
{
MessageBox messageBox = null;
-#if netle40
Application.Current.Dispatcher.Invoke(new Action(() =>
- {
- messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
- SetButtonStatus(messageBox, MessageBoxButton.OK);
- SetImage(messageBox, MessageBoxImage.Error);
- messageBox.ShowDialog();
- }));
-#else
- Application.Current.Dispatcher.Invoke(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK);
SetImage(messageBox, MessageBoxImage.Error);
SystemSounds.Asterisk.Play();
messageBox.ShowDialog();
- });
-#endif
+ }));
return messageBox._messageBoxResult;
}
@@ -263,18 +223,7 @@ namespace HandyControl.Controls
public static MessageBoxResult Fatal(string messageBoxText, string caption = null)
{
MessageBox messageBox = null;
-#if netle40
Application.Current.Dispatcher.Invoke(new Action(() =>
- {
- messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.None, MessageBoxResult.OK);
- SetButtonStatus(messageBox, MessageBoxButton.OK);
- messageBox.ShowImage = true;
- messageBox.Image = ResourceHelper.GetResource(ResourceToken.FatalGeometry);
- messageBox.ImageBrush = ResourceHelper.GetResource(ResourceToken.PrimaryTextBrush);
- messageBox.ShowDialog();
- }));
-#else
- Application.Current.Dispatcher.Invoke(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.None, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK);
@@ -283,8 +232,7 @@ namespace HandyControl.Controls
messageBox.ImageBrush = ResourceHelper.GetResource(ResourceToken.PrimaryTextBrush);
SystemSounds.Asterisk.Play();
messageBox.ShowDialog();
- });
-#endif
+ }));
return messageBox._messageBoxResult;
}
@@ -297,24 +245,14 @@ namespace HandyControl.Controls
public static MessageBoxResult Ask(string messageBoxText, string caption = null)
{
MessageBox messageBox = null;
-#if netle40
Application.Current.Dispatcher.Invoke(new Action(() =>
- {
- messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OKCancel, MessageBoxImage.Question, MessageBoxResult.Cancel);
- SetButtonStatus(messageBox, MessageBoxButton.OKCancel);
- SetImage(messageBox, MessageBoxImage.Question);
- messageBox.ShowDialog();
- }));
-#else
- Application.Current.Dispatcher.Invoke(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OKCancel, MessageBoxImage.Question, MessageBoxResult.Cancel);
SetButtonStatus(messageBox, MessageBoxButton.OKCancel);
SetImage(messageBox, MessageBoxImage.Question);
SystemSounds.Asterisk.Play();
messageBox.ShowDialog();
- });
-#endif
+ }));
return messageBox._messageBoxResult;
}
@@ -327,7 +265,6 @@ namespace HandyControl.Controls
public static MessageBoxResult Show(MessageBoxInfo info)
{
MessageBox messageBox = null;
-#if netle40
Application.Current.Dispatcher.Invoke(new Action(() =>
{
messageBox = CreateMessageBox(null, info.MessageBoxText, info.Caption, info.Button, MessageBoxImage.None, info.DefaultResult);
@@ -340,33 +277,13 @@ namespace HandyControl.Controls
messageBox.ImageBrush = ResourceHelper.GetResource(info.IconBrushKey);
}
- if (info.Style != null)
- {
- messageBox.Style = info.Style;
- }
- messageBox.ShowDialog();
- }));
-#else
- Application.Current.Dispatcher.Invoke(() =>
- {
- messageBox = CreateMessageBox(null, info.MessageBoxText, info.Caption, info.Button, MessageBoxImage.None, info.DefaultResult);
- SetButtonStatus(messageBox, info.Button);
-
- if (!string.IsNullOrEmpty(info.IconKey))
- {
- messageBox.ShowImage = true;
- messageBox.Image = ResourceHelper.GetResource(info.IconKey);
- messageBox.ImageBrush = ResourceHelper.GetResource(info.IconBrushKey);
- }
-
if (info.Style != null)
{
messageBox.Style = info.Style;
}
SystemSounds.Asterisk.Play();
messageBox.ShowDialog();
- });
-#endif
+ }));
return messageBox._messageBoxResult;
}
@@ -398,24 +315,14 @@ namespace HandyControl.Controls
public static MessageBoxResult Show(System.Windows.Window owner, string messageBoxText, string caption = null, MessageBoxButton button = MessageBoxButton.OK, MessageBoxImage icon = MessageBoxImage.None, MessageBoxResult defaultResult = MessageBoxResult.None)
{
MessageBox messageBox = null;
-#if netle40
Application.Current.Dispatcher.Invoke(new Action(() =>
- {
- messageBox = CreateMessageBox(owner, messageBoxText, caption, button, icon, defaultResult);
- SetButtonStatus(messageBox, button);
- SetImage(messageBox, icon);
- messageBox.ShowDialog();
- }));
-#else
- Application.Current.Dispatcher.Invoke(() =>
{
messageBox = CreateMessageBox(owner, messageBoxText, caption, button, icon, defaultResult);
SetButtonStatus(messageBox, button);
SetImage(messageBox, icon);
SystemSounds.Asterisk.Play();
messageBox.ShowDialog();
- });
-#endif
+ }));
return messageBox._messageBoxResult;
}
@@ -540,4 +447,4 @@ namespace HandyControl.Controls
|| value == MessageBoxResult.Yes;
}
}
-}
+}
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Data/ResourceToken.cs b/src/Shared/HandyControl_Shared/Data/ResourceToken.cs
index a8ebcb90..4ec115bd 100644
--- a/src/Shared/HandyControl_Shared/Data/ResourceToken.cs
+++ b/src/Shared/HandyControl_Shared/Data/ResourceToken.cs
@@ -52,6 +52,30 @@
internal const string RadioGroupItemVerticalLast = nameof(RadioGroupItemVerticalLast);
+ internal const string ButtonGroupItemDefault = nameof(ButtonGroupItemDefault);
+
+ internal const string ButtonGroupItemSingle = nameof(ButtonGroupItemSingle);
+
+ internal const string ButtonGroupItemHorizontalFirst = nameof(ButtonGroupItemHorizontalFirst);
+
+ internal const string ButtonGroupItemHorizontalLast = nameof(ButtonGroupItemHorizontalLast);
+
+ internal const string ButtonGroupItemVerticalFirst = nameof(ButtonGroupItemVerticalFirst);
+
+ internal const string ButtonGroupItemVerticalLast = nameof(ButtonGroupItemVerticalLast);
+
+ internal const string ToggleButtonGroupItemDefault = nameof(ToggleButtonGroupItemDefault);
+
+ internal const string ToggleButtonGroupItemSingle = nameof(ToggleButtonGroupItemSingle);
+
+ internal const string ToggleButtonGroupItemHorizontalFirst = nameof(ToggleButtonGroupItemHorizontalFirst);
+
+ internal const string ToggleButtonGroupItemHorizontalLast = nameof(ToggleButtonGroupItemHorizontalLast);
+
+ internal const string ToggleButtonGroupItemVerticalFirst = nameof(ToggleButtonGroupItemVerticalFirst);
+
+ internal const string ToggleButtonGroupItemVerticalLast = nameof(ToggleButtonGroupItemVerticalLast);
+
internal const string TabItemCapsuleDefault = nameof(TabItemCapsuleDefault);
internal const string TabItemCapsuleSingle = nameof(TabItemCapsuleSingle);
diff --git a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
index 368a727b..fc045ed5 100644
--- a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
+++ b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
@@ -18,6 +18,7 @@
+
@@ -77,7 +78,6 @@
-
@@ -278,7 +278,7 @@
-
+
@@ -466,7 +466,7 @@
Designer
MSBuild:Compile
-
+
Designer
MSBuild:Compile
@@ -662,7 +662,7 @@
Designer
MSBuild:Compile
-
+
Designer
MSBuild:Compile
diff --git a/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs b/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs
index 34b09cbd..ebffaf6a 100644
--- a/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs
+++ b/src/Shared/HandyControl_Shared/Properties/AssemblyInfo.cs
@@ -12,7 +12,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
-[assembly: AssemblyVersion("1.5.5")]
+[assembly: AssemblyVersion("2.0.0")]
#endif
[assembly: XmlnsDefinition("https://handyorg.github.io/handycontrol", "HandyControl.Controls")]
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ButtonBaseStyle.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ButtonBaseStyle.xaml
index 1e992ef9..26ada988 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ButtonBaseStyle.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ButtonBaseStyle.xaml
@@ -46,4 +46,45 @@
+
+
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Base/RadioGroupBaseStyle.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ButtonGroupBaseStyle.xaml
similarity index 71%
rename from src/Shared/HandyControl_Shared/Themes/Styles/Base/RadioGroupBaseStyle.xaml
rename to src/Shared/HandyControl_Shared/Themes/Styles/Base/ButtonGroupBaseStyle.xaml
index 4d702304..10084ad6 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Base/RadioGroupBaseStyle.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ButtonGroupBaseStyle.xaml
@@ -2,24 +2,25 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:HandyControl.Controls">
-
+
-
+
-
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Base/RadioButtonBaseStyle.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Base/RadioButtonBaseStyle.xaml
index 39ffaf97..26c893c6 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Base/RadioButtonBaseStyle.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Base/RadioButtonBaseStyle.xaml
@@ -196,9 +196,15 @@
-
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ToggleButtonBaseStyle.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ToggleButtonBaseStyle.xaml
index 7aa084cf..206dd44e 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ToggleButtonBaseStyle.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ToggleButtonBaseStyle.xaml
@@ -1,6 +1,7 @@
+ xmlns:controls="clr-namespace:HandyControl.Controls"
+ xmlns:system="clr-namespace:System;assembly=mscorlib">
@@ -218,4 +219,53 @@
+
+
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Button.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Button.xaml
index 238edc28..75a96a7c 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Button.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Button.xaml
@@ -81,4 +81,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/RadioGroup.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/ButtonGroup.xaml
similarity index 70%
rename from src/Shared/HandyControl_Shared/Themes/Styles/RadioGroup.xaml
rename to src/Shared/HandyControl_Shared/Themes/Styles/ButtonGroup.xaml
index 3a6d2a00..9db91779 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/RadioGroup.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/ButtonGroup.xaml
@@ -3,12 +3,12 @@
xmlns:controls="clr-namespace:HandyControl.Controls">
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Tools/StyleSelector/ButtonGroupItemStyleSelector.cs b/src/Shared/HandyControl_Shared/Tools/StyleSelector/ButtonGroupItemStyleSelector.cs
new file mode 100644
index 00000000..5edb7597
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Tools/StyleSelector/ButtonGroupItemStyleSelector.cs
@@ -0,0 +1,87 @@
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using HandyControl.Controls;
+using HandyControl.Data;
+
+namespace HandyControl.Tools
+{
+ public class ButtonGroupItemStyleSelector : StyleSelector
+ {
+ public override Style SelectStyle(object item, DependencyObject container)
+ {
+ if (container is ButtonGroup buttonGroup && item is ButtonBase buttonBase)
+ {
+ var count = buttonGroup.Items.Count;
+
+ switch (buttonBase)
+ {
+ case RadioButton _:
+ {
+ if (count == 1)
+ {
+ return ResourceHelper.GetResource