From aeb5d2a3b83327921fae8af3476ab44ea6ec86f9 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Mon, 15 Jun 2020 00:24:18 +0800 Subject: [PATCH 1/6] add partial codes --- .../HandyControlDemo_Net_40.csproj | 3 + .../HandyControlDemo_Net_GE45.csproj | 3 + .../HandyControl_Net_GE45.csproj | 3 + .../Data/DemoInfo.json | 3 +- .../HandyControlDemo_Shared.projitems | 7 + .../Properties/Langs/Lang.Designer.cs | 13 +- .../Properties/Langs/Lang.en.resx | 3 + .../Properties/Langs/Lang.fa.resx | 3 + .../Properties/Langs/Lang.fr.resx | 3 + .../Properties/Langs/Lang.ko-KR.resx | 3 + .../Properties/Langs/Lang.resx | 3 + .../Properties/Langs/Lang.ru.resx | 3 + .../Properties/Langs/Lang.tr.resx | 3 + .../Properties/Langs/LangProvider.cs | 13 +- .../PropertyGridEditorPart_16x.png | Bin 0 -> 173 bytes .../Controls/PropertyGridDemoCtl.xaml | 7 + .../Controls/PropertyGridDemoCtl.xaml.cs | 10 ++ .../Editors/BooleanPropertyEditor.cs | 23 +++ .../Editors/DateTimePropertyEditor.cs | 19 +++ .../Editors/IntegerPropertyEditor.cs | 31 ++++ .../Editors/PropertyEditorBase.cs | 18 ++ .../Editors/StringPropertyEditor.cs | 19 +++ .../Controls/PropertyGrid/PropertyGrid.cs | 103 +++++++++++ .../Controls/PropertyGrid/PropertyItem.cs | 141 +++++++++++++++ .../PropertyGrid/PropertyItemsControl.cs | 9 + .../Controls/PropertyGrid/PropertyResolver.cs | 160 ++++++++++++++++++ .../HandyControl_Shared.projitems | 14 ++ .../Properties/Langs/Lang.Designer.cs | 13 +- .../Properties/Langs/Lang.en.resx | 3 + .../Properties/Langs/Lang.fa.resx | 3 + .../Properties/Langs/Lang.fr.resx | 3 + .../Properties/Langs/Lang.ko-KR.resx | 3 + .../Properties/Langs/Lang.resx | 3 + .../Properties/Langs/Lang.ru.resx | 3 + .../Properties/Langs/Lang.tr.resx | 3 + .../Styles/Base/PropertyGridBaseStyle.xaml | 144 ++++++++++++++++ .../Extension/CustomAttributeExtension.cs | 12 ++ 37 files changed, 806 insertions(+), 4 deletions(-) create mode 100644 src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/PropertyGridEditorPart_16x.png create mode 100644 src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml create mode 100644 src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/BooleanPropertyEditor.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/DateTimePropertyEditor.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/IntegerPropertyEditor.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/PropertyEditorBase.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/StringPropertyEditor.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/PropertyGrid.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/PropertyItem.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/PropertyItemsControl.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/PropertyResolver.cs create mode 100644 src/Shared/HandyControl_Shared/Themes/Styles/Base/PropertyGridBaseStyle.xaml create mode 100644 src/Shared/HandyControl_Shared/Tools/Extension/CustomAttributeExtension.cs 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 81d86893..c3b5331e 100644 --- a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj +++ b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj @@ -313,6 +313,9 @@ Resources\Img\LeftMainContent\RadioButton_16x.png + + Resources\Img\LeftMainContent\PropertyGridEditorPart_16x.png + Resources\Img\LeftMainContent\RepeatButton_16x.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 a4a7980a..bdb2f1da 100644 --- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj +++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj @@ -313,6 +313,9 @@ Resources\Img\LeftMainContent\RadioButton_16x.png + + Resources\Img\LeftMainContent\PropertyGridEditorPart_16x.png + Resources\Img\LeftMainContent\RepeatButton_16x.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 936ec214..3d75fe2c 100644 --- a/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj +++ b/src/Net_GE45/HandyControl_Net_GE45/HandyControl_Net_GE45.csproj @@ -134,4 +134,7 @@ Resources\Images\GlowWindow\topright.png + + + \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json b/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json index e69dda21..288b158d 100644 --- a/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json +++ b/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json @@ -39,6 +39,7 @@ "title": "Controls", "selectedIndex": 0, "demoItemList": [ + [ "PropertyGrid", "PropertyGridDemoCtl", "PropertyGridEditorPart_16x", "1" ], [ "FloatingBlock", "FloatingBlockDemoCtl", "thumbs_up", "" ], [ "ImageBlock", "ImageBlockDemoCtl", "ImageStack_16x", "" ], [ "Magnifier", "MagnifierDemoCtl", "Search_16x", "" ], @@ -55,7 +56,7 @@ [ "TextBox", "TextBoxDemoCtl", "TextBox_16x", "" ], [ "ComboBox", "ComboBoxDemoCtl", "ComboBox_16x", "" ], [ "PasswordBox", "PasswordBoxDemoCtl", "PasswordBox_16x", "" ], - [ "PinBox", "PinBoxDemoCtl", "Ellipsis_16x", "1" ], + [ "PinBox", "PinBoxDemoCtl", "Ellipsis_16x", "" ], [ "DatePicker", "DatePickerDemoCtl", "DatePicker_16x", "" ], [ "Clock", "ClockDemoCtl", "Time_color_16x", "" ], [ "TimePicker", "TimePickerDemoCtl", "TimePicker_16x", "" ], diff --git a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems index b28427b0..6dc16fbe 100644 --- a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems +++ b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems @@ -84,6 +84,9 @@ PinBoxDemoCtl.xaml + + PropertyGridDemoCtl.xaml + RangeSliderDemoCtl.xaml @@ -548,6 +551,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs index eb2498b4..d6b6456b 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs @@ -1337,7 +1337,18 @@ namespace HandyControlDemo.Properties.Langs { return ResourceManager.GetString("Project", resourceCulture); } } - + + /// + /// 查找类似 属性编辑器 的本地化字符串。 + /// + public static string PropertyGrid + { + get + { + return ResourceManager.GetString("PropertyGrid", resourceCulture); + } + } + /// /// 查找类似 按住说话 的本地化字符串。 /// diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx index 324db1ca..0f8f8540 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx @@ -750,4 +750,7 @@ Looks up a localized string similar to "{0}". + + PropertyGrid + \ 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 75ebfd5d..f176e3e2 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx @@ -750,4 +750,7 @@ Looks up a localized string similar to "{0}". + + PropertyGrid + \ 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 8e17aff4..1f15b560 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx @@ -750,4 +750,7 @@ Looks up a localized string similar to "{0}". + + PropertyGrid + \ 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 f3f49253..fe9f13ee 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ko-KR.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ko-KR.resx @@ -750,4 +750,7 @@ Looks up a localized string similar to "{0}". + + PropertyGrid + \ 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 455582c2..e876c1bc 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx @@ -750,4 +750,7 @@ 查找类似 {0} 的本地化字符串。 + + 属性编辑器 + \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ru.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ru.resx index 324db1ca..0f8f8540 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ru.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ru.resx @@ -750,4 +750,7 @@ Looks up a localized string similar to "{0}". + + PropertyGrid + \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.tr.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.tr.resx index f7354d30..f0fb5b5c 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.tr.resx +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.tr.resx @@ -750,4 +750,7 @@ Looks up a localized string similar to "{0}". + + PropertyGrid + \ No newline at end of file diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/LangProvider.cs b/src/Shared/HandyControlDemo_Shared/Properties/Langs/LangProvider.cs index 5dd7cb48..e031d4b3 100644 --- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/LangProvider.cs +++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/LangProvider.cs @@ -179,7 +179,8 @@ namespace HandyControlDemo.Properties.Langs OnPropertyChanged(nameof(ProgressBar)); OnPropertyChanged(nameof(ProgressButton)); OnPropertyChanged(nameof(Project)); - OnPropertyChanged(nameof(PushToTalk)); + OnPropertyChanged(nameof(PropertyGrid)); + OnPropertyChanged(nameof(PushToTalk)); OnPropertyChanged(nameof(QQGroup)); OnPropertyChanged(nameof(RadioButton)); OnPropertyChanged(nameof(RangeSlider)); @@ -960,6 +961,11 @@ namespace HandyControlDemo.Properties.Langs /// public string Project => Lang.Project; + /// + /// 查找类似 属性编辑器 的本地化字符串。 + /// + public string PropertyGrid => Lang.PropertyGrid; + /// /// 查找类似 按住说话 的本地化字符串。 /// @@ -2024,6 +2030,11 @@ namespace HandyControlDemo.Properties.Langs /// public static string Project = nameof(Project); + /// + /// 查找类似 属性编辑器 的本地化字符串。 + /// + public static string PropertyGrid = nameof(PropertyGrid); + /// /// 查找类似 按住说话 的本地化字符串。 /// diff --git a/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/PropertyGridEditorPart_16x.png b/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/PropertyGridEditorPart_16x.png new file mode 100644 index 0000000000000000000000000000000000000000..09bdd02d1c52b921a785e3eba924cc573cd0ec0e GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpkTbG zi(^Pd+}_ECd<=>lEVZ}){nyXhyf*xzK#Jl{>&d(eXZ9>mwo>so4QF5w<&7x5AH-I{ z%=|w;;qPy@wNn{67_Y6ECADOiig3fe{F@4Mwn(z9-<^{ S?zjwS6@#a%pUXO@geCxpvpG!w literal 0 HcmV?d00001 diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml new file mode 100644 index 00000000..37108e68 --- /dev/null +++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml @@ -0,0 +1,7 @@ + + + diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml.cs b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml.cs new file mode 100644 index 00000000..adb77878 --- /dev/null +++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml.cs @@ -0,0 +1,10 @@ +namespace HandyControlDemo.UserControl +{ + public partial class PropertyGridDemoCtl + { + public PropertyGridDemoCtl() + { + InitializeComponent(); + } + } +} diff --git a/src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/BooleanPropertyEditor.cs b/src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/BooleanPropertyEditor.cs new file mode 100644 index 00000000..4601d51c --- /dev/null +++ b/src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/BooleanPropertyEditor.cs @@ -0,0 +1,23 @@ +using System.Windows; +using System.Windows.Controls.Primitives; +using HandyControl.Tools; + +namespace HandyControl.Controls +{ + public class BooleanPropertyEditor : PropertyEditorBase + { + public override FrameworkElement CreateElement(PropertyItem propertyItem) + { + var button = new ToggleButton + { + Style = ResourceHelper.GetResource + + + + + + + + \ No newline at end of file diff --git a/src/Shared/HandyControl_Shared/Tools/Extension/CustomAttributeExtension.cs b/src/Shared/HandyControl_Shared/Tools/Extension/CustomAttributeExtension.cs new file mode 100644 index 00000000..f50c4d9e --- /dev/null +++ b/src/Shared/HandyControl_Shared/Tools/Extension/CustomAttributeExtension.cs @@ -0,0 +1,12 @@ +using System; +using System.Reflection; + +namespace HandyControl.Tools.Extension +{ + internal static class CustomAttributeExtension + { + public static Attribute GetCustomAttribute(this MemberInfo element, Type attributeType) => Attribute.GetCustomAttribute(element, attributeType); + + public static T GetCustomAttribute(this MemberInfo element) where T : Attribute => (T)GetCustomAttribute(element, typeof(T)); + } +} \ No newline at end of file From 0a9d95fafd81980e8f2f6d001748f44c8dc2bf13 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Mon, 15 Jun 2020 00:27:04 +0800 Subject: [PATCH 2/6] Update Directory.Build.Props --- src/Directory.Build.Props | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Directory.Build.Props b/src/Directory.Build.Props index 7afc4ff0..f9bf59c1 100644 --- a/src/Directory.Build.Props +++ b/src/Directory.Build.Props @@ -1,9 +1,9 @@ true - 2.5.0.1 - 2.5.0.1 - 2.5.0.1 + 3.0.0.0 + 3.0.0.0 + 3.0.0.0 8.0 Copyright © HandyOrg 2018-2020 HandyOrg From f7a39f3d325d4e2d1a316f905326026cd4953e53 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Mon, 15 Jun 2020 22:47:04 +0800 Subject: [PATCH 3/6] add PropertyGrid Demo --- .../Controls/PropertyGridDemoCtl.xaml | 20 ++- .../Editors/DatePropertyEditor.cs | 19 +++ .../Editors/IntegerPropertyEditor.cs | 4 +- .../Editors/NumberPropertyEditor.cs | 36 +++++ .../Editors/PlainTextPropertyEditor.cs | 19 +++ .../Editors/PropertyEditorBase.cs | 8 +- .../Editors/StringPropertyEditor.cs | 2 +- ...pertyEditor.cs => SwitchPropertyEditor.cs} | 2 +- .../Editors/TimePropertyEditor.cs | 19 +++ .../Controls/PropertyGrid/PropertyGrid.cs | 141 ++++++++++++++---- .../Controls/PropertyGrid/PropertyItem.cs | 9 -- .../Controls/PropertyGrid/PropertyResolver.cs | 33 ++-- .../HandyControl_Shared.projitems | 12 +- .../Interactivity/Commands/ControlCommands.cs | 10 ++ .../Styles/Base/PropertyGridBaseStyle.xaml | 47 +++--- .../Themes/Styles/Base/ToolTipBaseStyle.xaml | 9 +- .../Themes/Styles/PropertyGrid.xaml | 11 ++ .../Themes/Styles/Style.xaml | 1 + 18 files changed, 320 insertions(+), 82 deletions(-) create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/DatePropertyEditor.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/NumberPropertyEditor.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/PlainTextPropertyEditor.cs rename src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/{BooleanPropertyEditor.cs => SwitchPropertyEditor.cs} (91%) create mode 100644 src/Shared/HandyControl_Shared/Controls/PropertyGrid/Editors/TimePropertyEditor.cs create mode 100644 src/Shared/HandyControl_Shared/Themes/Styles/PropertyGrid.xaml diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml index 37108e68..eff6b153 100644 --- a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml +++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/PropertyGridDemoCtl.xaml @@ -1,7 +1,23 @@  - + + + + + + + + + +