diff --git a/.github/workflows/push-to-myget.yml b/.github/workflows/push-to-myget.yml
index 1d100f37..825c0df3 100644
--- a/.github/workflows/push-to-myget.yml
+++ b/.github/workflows/push-to-myget.yml
@@ -15,7 +15,7 @@ jobs:
run: |
cd build
.\build.ps1
- nuget pack build-for-myget.nuspec -version 3.2.0-beta.${env:GITHUB_RUN_NUMBER}
+ nuget pack build-for-myget.nuspec -version 3.3.0-beta.${env:GITHUB_RUN_NUMBER}
$nupkgName = @(gci *.nupkg)[0].Name
$mygetSourcePath = "https://www.myget.org/F/handycontrol"
nuget setApiKey ${{ secrets.MYGETTOKEN }} -Source $mygetSourcePath
diff --git a/.gitignore b/.gitignore
index 9b3fa82f..3ac83486 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,8 +6,7 @@
packages/
build/*
!build/build.cake
-!build/build.nuspec
-!build/build-for-myget.nuspec
+!build/build*.nuspec
!build/build.ps1
!build/tools/
build/tools/*
diff --git a/README-cn.md b/README-cn.md
index 7516b0fe..7cd2546a 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -185,6 +185,10 @@ Step 4: 开始编码
## 最新示例
+### AutoCompleteTextBox
+
+
+
### ElementGroup

@@ -201,12 +205,12 @@ Step 4: 开始编码

+## 历史发布
+
### ImageSelector

-## 历史发布
-
### PropertyGrid

diff --git a/README.md b/README.md
index 090b1331..30a2f535 100644
--- a/README.md
+++ b/README.md
@@ -179,6 +179,10 @@ Step 4: Enjoy coding
## Latest examples
+### AutoCompleteTextBox
+
+
+
### ElementGroup

@@ -195,12 +199,12 @@ Step 4: Enjoy coding

+## History publication
+
### ImageSelector

-## History publication
-
### PropertyGrid

diff --git a/build/build.Lang.ca-ES.nuspec b/build/build.Lang.ca-ES.nuspec
new file mode 100644
index 00000000..0eb2c076
--- /dev/null
+++ b/build/build.Lang.ca-ES.nuspec
@@ -0,0 +1,53 @@
+
+
+
+ HandyControl.Lang.ca-ES
+ 3.2.0
+ HandyOrg
+ HandyOrg
+ HandyOrg
+ true
+ LICENSE
+ icon.png
+ https://github.com/HandyOrg/HandyControl
+ Contains some simple and commonly used WPF controls
+ Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
+ Copyright © HandyOrg 2018-2021
+ WPF C# Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/build.Lang.en.nuspec b/build/build.Lang.en.nuspec
new file mode 100644
index 00000000..047a46cc
--- /dev/null
+++ b/build/build.Lang.en.nuspec
@@ -0,0 +1,53 @@
+
+
+
+ HandyControl.Lang.en
+ 3.2.0
+ HandyOrg
+ HandyOrg
+ HandyOrg
+ true
+ LICENSE
+ icon.png
+ https://github.com/HandyOrg/HandyControl
+ Contains some simple and commonly used WPF controls
+ Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
+ Copyright © HandyOrg 2018-2021
+ WPF C# Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/build.Lang.fa.nuspec b/build/build.Lang.fa.nuspec
new file mode 100644
index 00000000..f5c42b9c
--- /dev/null
+++ b/build/build.Lang.fa.nuspec
@@ -0,0 +1,53 @@
+
+
+
+ HandyControl.Lang.fa
+ 3.2.0
+ HandyOrg
+ HandyOrg
+ HandyOrg
+ true
+ LICENSE
+ icon.png
+ https://github.com/HandyOrg/HandyControl
+ Contains some simple and commonly used WPF controls
+ Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
+ Copyright © HandyOrg 2018-2021
+ WPF C# Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/build.Lang.fr.nuspec b/build/build.Lang.fr.nuspec
new file mode 100644
index 00000000..a95c7db7
--- /dev/null
+++ b/build/build.Lang.fr.nuspec
@@ -0,0 +1,53 @@
+
+
+
+ HandyControl.Lang.fr
+ 3.2.0
+ HandyOrg
+ HandyOrg
+ HandyOrg
+ true
+ LICENSE
+ icon.png
+ https://github.com/HandyOrg/HandyControl
+ Contains some simple and commonly used WPF controls
+ Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
+ Copyright © HandyOrg 2018-2021
+ WPF C# Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/build.Lang.ko-KR.nuspec b/build/build.Lang.ko-KR.nuspec
new file mode 100644
index 00000000..f9f05d5d
--- /dev/null
+++ b/build/build.Lang.ko-KR.nuspec
@@ -0,0 +1,53 @@
+
+
+
+ HandyControl.Lang.ko-KR
+ 3.2.0
+ HandyOrg
+ HandyOrg
+ HandyOrg
+ true
+ LICENSE
+ icon.png
+ https://github.com/HandyOrg/HandyControl
+ Contains some simple and commonly used WPF controls
+ Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
+ Copyright © HandyOrg 2018-2021
+ WPF C# Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/build.Lang.pl.nuspec b/build/build.Lang.pl.nuspec
new file mode 100644
index 00000000..6c105a27
--- /dev/null
+++ b/build/build.Lang.pl.nuspec
@@ -0,0 +1,53 @@
+
+
+
+ HandyControl.Lang.pl
+ 3.2.0
+ HandyOrg
+ HandyOrg
+ HandyOrg
+ true
+ LICENSE
+ icon.png
+ https://github.com/HandyOrg/HandyControl
+ Contains some simple and commonly used WPF controls
+ Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
+ Copyright © HandyOrg 2018-2021
+ WPF C# Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/build.Lang.pt-BR.nuspec b/build/build.Lang.pt-BR.nuspec
new file mode 100644
index 00000000..5ae43e22
--- /dev/null
+++ b/build/build.Lang.pt-BR.nuspec
@@ -0,0 +1,53 @@
+
+
+
+ HandyControl.Lang.pt-BR
+ 3.2.0
+ HandyOrg
+ HandyOrg
+ HandyOrg
+ true
+ LICENSE
+ icon.png
+ https://github.com/HandyOrg/HandyControl
+ Contains some simple and commonly used WPF controls
+ Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
+ Copyright © HandyOrg 2018-2021
+ WPF C# Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/build.Lang.ru.nuspec b/build/build.Lang.ru.nuspec
new file mode 100644
index 00000000..7256fb00
--- /dev/null
+++ b/build/build.Lang.ru.nuspec
@@ -0,0 +1,53 @@
+
+
+
+ HandyControl.Lang.ru
+ 3.2.0
+ HandyOrg
+ HandyOrg
+ HandyOrg
+ true
+ LICENSE
+ icon.png
+ https://github.com/HandyOrg/HandyControl
+ Contains some simple and commonly used WPF controls
+ Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
+ Copyright © HandyOrg 2018-2021
+ WPF C# Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/build.Lang.tr.nuspec b/build/build.Lang.tr.nuspec
new file mode 100644
index 00000000..1ac7f1a7
--- /dev/null
+++ b/build/build.Lang.tr.nuspec
@@ -0,0 +1,53 @@
+
+
+
+ HandyControl.Lang.tr
+ 3.2.0
+ HandyOrg
+ HandyOrg
+ HandyOrg
+ true
+ LICENSE
+ icon.png
+ https://github.com/HandyOrg/HandyControl
+ Contains some simple and commonly used WPF controls
+ Changes are detailed at https://github.com/HandyOrg/HandyControl/releases
+ Copyright © HandyOrg 2018-2021
+ WPF C# Control
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/build.nuspec b/build/build.nuspec
index 87ee9de2..e1d504a5 100644
--- a/build/build.nuspec
+++ b/build/build.nuspec
@@ -33,174 +33,48 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Directory.Build.Props b/src/Directory.Build.Props
index cb6332cc..04ff206e 100644
--- a/src/Directory.Build.Props
+++ b/src/Directory.Build.Props
@@ -1,13 +1,13 @@
true
- 3.2.0.0
- 3.2.0.0
- 3.2.0.0
+ 3.3.0.0
+ 3.3.0.0
+ 3.3.0.0
latest
Copyright © HandyOrg 2018-2021
HandyOrg
https://github.com/HandyOrg/HandyControl
https://handyorg.github.io/
-
\ No newline at end of file
+
diff --git a/src/HandyControl.sln b/src/HandyControl.sln
index 39a603b4..1459e713 100644
--- a/src/HandyControl.sln
+++ b/src/HandyControl.sln
@@ -25,6 +25,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControlDemo_Code", "Sh
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Microsoft.Windows.Shell", "Shared\Microsoft.Windows.Shell\Microsoft.Windows.Shell.shproj", "{BBE51380-8B21-49FF-9CFC-B29447A40999}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7F52CFD3-EF6C-4D3C-A9D4-B25BF726382A}"
+ ProjectSection(SolutionItems) = preProject
+ Directory.Build.Props = Directory.Build.Props
+ EndProjectSection
+EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
Shared\HandyControl_Shared\HandyControl_Shared.projitems*{32204503-2ef0-4681-ae13-aa1feb6c658a}*SharedItemsImports = 5
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 5bd91cb0..0f84bcab 100644
--- a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
+++ b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
@@ -402,6 +402,9 @@
Resources\Img\LeftMainContent\GridPane_16x.png
+
+ Resources\Img\LeftMainContent\AutoComplete_16x.png
+
Resources\Img\under_construction.gif
diff --git a/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/CheckComboBoxBaseStyle.xaml b/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/CheckComboBoxBaseStyle.xaml
index bdab4ba7..2265496d 100644
--- a/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/CheckComboBoxBaseStyle.xaml
+++ b/src/Net_40/HandyControl_Net_40/Themes/Styles/Base/CheckComboBoxBaseStyle.xaml
@@ -7,7 +7,6 @@
xmlns:langs="clr-namespace:HandyControl.Properties.Langs">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml b/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
index ab59c83a..63811432 100644
--- a/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
+++ b/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
@@ -9,6 +9,7 @@
+
@@ -410,7 +411,7 @@
-
+
@@ -705,22 +706,15 @@
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -6822,7 +7038,6 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -11977,6 +12499,13 @@
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -12877,6 +13270,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 246ff69d..9aaf0808 100644
--- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
@@ -404,6 +404,9 @@
Resources\Img\LeftMainContent\GridPane_16x.png
+
+ Resources\Img\LeftMainContent\AutoComplete_16x.png
+
Resources\Img\under_construction.gif
diff --git a/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj b/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
index d735ac7c..9e3731c4 100644
--- a/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
+++ b/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
@@ -56,6 +56,9 @@
UserControl\Controls\AnimationPathDemoCtl.xaml
+
+ UserControl\Controls\AutoCompleteTextBoxDemoCtl.xaml
+
UserControl\Controls\BadgeDemoCtl.xaml
@@ -431,6 +434,10 @@
UserControl\Controls\AnimationPathDemoCtl.xaml.cs
AnimationPathDemoCtl.xaml
+
+ UserControl\Controls\AutoCompleteTextBoxDemoCtl.xaml.cs
+ AutoCompleteTextBoxDemoCtl.xaml
+
UserControl\Controls\BadgeDemoCtl.xaml.cs
BadgeDemoCtl.xaml
@@ -850,6 +857,9 @@
ViewModel\ComboBoxDemoViewModel.cs
+
+ ViewModel\AutoCompleteTextBoxDemoViewModel.cs
+
ViewModel\BadgeDemoViewModel.cs
@@ -901,8 +911,8 @@
ViewModel\WindowDemoViewModel.cs
-
- ViewModel\DemoViewModelBase!1.cs
+
+ ViewModel\DemoViewModelBase`1.cs
ViewModel\ItemsDisplayViewModel.cs
diff --git a/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json b/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json
index a767567c..13ed6605 100644
--- a/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json
+++ b/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json
@@ -44,7 +44,7 @@
"demoItemList": [
[ "FloatingBlock", "FloatingBlockDemoCtl", "thumbs_up", "", "Interacting" ],
[ "PropertyGrid", "PropertyGridDemoCtl", "PropertyGridEditorPart_16x", "", "DataEntry" ],
- [ "ImageSelector", "ImageSelectorDemoCtl", "Image_16x", "1", "DataEntry" ],
+ [ "ImageSelector", "ImageSelectorDemoCtl", "Image_16x", "", "DataEntry" ],
[ "ImageBlock", "ImageBlockDemoCtl", "ImageStack_16x", "", "DataDisplay" ],
[ "Magnifier", "MagnifierDemoCtl", "Search_16x", "", "Interacting" ],
[ "Gravatar", "GravatarDemoCtl", "User_16x", "", "DataDisplay" ],
@@ -57,6 +57,7 @@
[ "TextBox", "TextBoxDemoCtl", "TextBox_16x", "", "DataEntry" ],
[ "ComboBox", "ComboBoxDemoCtl", "ComboBox_16x", "", "DataEntry" ],
[ "CheckComboBox", "CheckComboBoxDemoCtl", "CheckBoxList_16x", "1", "DataEntry" ],
+ [ "AutoCompleteTextBox", "AutoCompleteTextBoxDemoCtl", "AutoComplete_16x", "1", "DataEntry" ],
[ "PasswordBox", "PasswordBoxDemoCtl", "PasswordBox_16x", "", "DataEntry" ],
[ "PinBox", "PinBoxDemoCtl", "Ellipsis_16x", "", "DataEntry" ],
[ "DatePicker", "DatePickerDemoCtl", "DatePicker_16x", "", "DataEntry" ],
diff --git a/src/Shared/HandyControlDemo_Shared/Data/Model/DemoItemModel.cs b/src/Shared/HandyControlDemo_Shared/Data/Model/DemoItemModel.cs
index b0811427..3cbaab9c 100644
--- a/src/Shared/HandyControlDemo_Shared/Data/Model/DemoItemModel.cs
+++ b/src/Shared/HandyControlDemo_Shared/Data/Model/DemoItemModel.cs
@@ -4,6 +4,9 @@ namespace HandyControlDemo.Data
{
public class DemoItemModel : ObservableObject
{
+ private bool _isVisible = true;
+ private string _queriesText = string.Empty;
+
public string Name { get; set; }
public string GroupName { get; set; }
@@ -14,7 +17,15 @@ namespace HandyControlDemo.Data
public bool IsNew { get; set; }
- private bool _isVisible = true;
+ public string QueriesText
+ {
+ get => _queriesText;
+#if NET40
+ set => Set(nameof(QueriesText), ref _queriesText, value);
+#else
+ set => Set(ref _queriesText, value);
+#endif
+ }
public bool IsVisible
{
diff --git a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
index 9ac8cea4..d672b443 100644
--- a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
+++ b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
@@ -60,6 +60,9 @@
TextDialogWithTimer.xaml
+
+ AutoCompleteTextBoxDemoCtl.xaml
+
ElementGroupDemoCtl.xaml
@@ -408,6 +411,7 @@
+
@@ -425,7 +429,7 @@
-
+
@@ -540,6 +544,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 911f565e..9db8b90f 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
@@ -124,6 +124,17 @@ namespace HandyControlDemo.Properties.Langs
}
}
+ ///
+ /// Looks up a localized string similar to 自动补全文本框.
+ ///
+ public static string AutoCompleteTextBox
+ {
+ get
+ {
+ return ResourceManager.GetString("AutoCompleteTextBox", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to 标记.
///
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ca-ES.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ca-ES.resx
index f46c26b4..3ad5692c 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ca-ES.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ca-ES.resx
@@ -798,4 +798,7 @@
ElementGroup
+
+ AutoCompleteTextBox
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
index 76e2f64d..7002d977 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
@@ -798,4 +798,7 @@
ElementGroup
+
+ AutoCompleteTextBox
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.es.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.es.resx
index 4b9f220e..68a8d7ac 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.es.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.es.resx
@@ -1,4 +1,4 @@
-
+
@@ -61,11 +91,17 @@
+
+
+
+
@@ -106,31 +148,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/CheckComboBox.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/CheckComboBox.xaml
index 8465946c..f569812d 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/CheckComboBox.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/CheckComboBox.xaml
@@ -4,8 +4,34 @@
+
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Clock.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Clock.xaml
index b5e9481b..bb5732e6 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Clock.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Clock.xaml
@@ -51,16 +51,12 @@
-
-
+
+
-
+
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/DataGrid.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/DataGrid.xaml
index 4d435fe4..48d24bb1 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/DataGrid.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/DataGrid.xaml
@@ -1,243 +1,8 @@
+ xmlns:hc="clr-namespace:HandyControl.Controls">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/ListBox.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/ListBox.xaml
index 7b4adcbc..69620440 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/ListBox.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/ListBox.xaml
@@ -4,6 +4,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/RadioButton.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/RadioButton.xaml
index 7a08ced3..2da9bdac 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/RadioButton.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/RadioButton.xaml
@@ -4,6 +4,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/RepeatButton.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/RepeatButton.xaml
index 02e2da4e..025483a8 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/RepeatButton.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/RepeatButton.xaml
@@ -17,28 +17,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -61,6 +91,11 @@
+
+
+
+
@@ -106,31 +147,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/TextBox.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/TextBox.xaml
index 09e53906..d0cb5f86 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/TextBox.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/TextBox.xaml
@@ -6,8 +6,27 @@
+
+
+
+
+
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Theme.xaml b/src/Shared/HandyControl_Shared/Themes/Theme.xaml
index 957f8d0b..7d11ec23 100644
--- a/src/Shared/HandyControl_Shared/Themes/Theme.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Theme.xaml
@@ -9,6 +9,7 @@
+
@@ -410,7 +411,7 @@
-
+
@@ -705,22 +706,15 @@
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -6905,7 +7121,6 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -12118,6 +12641,13 @@
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -13027,6 +13421,7 @@
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Theme_40.txt b/src/Shared/HandyControl_Shared/Themes/Theme_40.txt
index d4772aff..2279f7de 100644
--- a/src/Shared/HandyControl_Shared/Themes/Theme_40.txt
+++ b/src/Shared/HandyControl_Shared/Themes/Theme_40.txt
@@ -116,6 +116,8 @@ Styles\Base\ToolTipBaseStyle.xaml
Styles\Base\TransferBaseStyle.xaml
..\..\..\Net_40\HandyControl_Net_40\Themes\Styles\Base\TreeViewBaseStyle.xaml
Styles\Base\WatermarkBaseStyle.xaml
+Styles\Base\AutoCompleteTextBoxBaseStyle.xaml
+Styles\Base\DataGridBaseStyle.xaml
# --------------------------------------
Styles\Badge.xaml
Styles\CalendarWithClock.xaml
@@ -183,3 +185,4 @@ Styles\Transfer.xaml
Styles\TransitioningContentControl.xaml
Styles\TreeView.xaml
Styles\Watermark.xaml
+Styles\AutoCompleteTextBox.xaml
diff --git a/src/Shared/HandyControl_Shared/Themes/Theme_GE45.txt b/src/Shared/HandyControl_Shared/Themes/Theme_GE45.txt
index 9e629efc..04eb5da6 100644
--- a/src/Shared/HandyControl_Shared/Themes/Theme_GE45.txt
+++ b/src/Shared/HandyControl_Shared/Themes/Theme_GE45.txt
@@ -116,6 +116,8 @@ Styles\Base\ToolTipBaseStyle.xaml
Styles\Base\TransferBaseStyle.xaml
Styles\Base\TreeViewBaseStyle.xaml
Styles\Base\WatermarkBaseStyle.xaml
+Styles\Base\AutoCompleteTextBoxBaseStyle.xaml
+Styles\Base\DataGridBaseStyle.xaml
# --------------------------------------
Styles\Badge.xaml
Styles\CalendarWithClock.xaml
@@ -183,3 +185,4 @@ Styles\Transfer.xaml
Styles\TransitioningContentControl.xaml
Styles\TreeView.xaml
Styles\Watermark.xaml
+Styles\AutoCompleteTextBox.xaml
diff --git a/src/Shared/HandyControl_Shared/Tools/Converter/BooleanArr2BooleanConverter.cs b/src/Shared/HandyControl_Shared/Tools/Converter/BooleanArr2BooleanConverter.cs
new file mode 100644
index 00000000..b154e6be
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Tools/Converter/BooleanArr2BooleanConverter.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Windows.Data;
+using HandyControl.Data;
+
+namespace HandyControl.Tools.Converter
+{
+ public class BooleanArr2BooleanConverter : IMultiValueConverter
+ {
+ public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
+ {
+ if (values == null)
+ {
+ return ValueBoxes.FalseBox;
+ }
+
+ var arr = new List();
+ foreach (var item in values)
+ {
+ if (item is bool boolValue)
+ {
+ arr.Add(boolValue);
+ }
+ else
+ {
+ return ValueBoxes.FalseBox;
+ }
+ }
+
+ return ValueBoxes.BooleanBox(arr.All(item => item));
+ }
+
+ public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
+ {
+ throw new NotSupportedException();
+ }
+ }
+}
diff --git a/src/Shared/HandyControl_Shared/Collections/DateTimeRangeComparer.cs b/src/Shared/HandyControl_Shared/Tools/Generator/DateTimeRangeComparer.cs
similarity index 91%
rename from src/Shared/HandyControl_Shared/Collections/DateTimeRangeComparer.cs
rename to src/Shared/HandyControl_Shared/Tools/Generator/DateTimeRangeComparer.cs
index 48e7f2fc..361ce4c0 100644
--- a/src/Shared/HandyControl_Shared/Collections/DateTimeRangeComparer.cs
+++ b/src/Shared/HandyControl_Shared/Tools/Generator/DateTimeRangeComparer.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using HandyControl.Data;
-namespace HandyControl.Collections
+namespace HandyControl.Tools
{
public class DateTimeRangeComparer : IComparer
{
diff --git a/src/Shared/HandyControl_Shared/Tools/Helper/BindingHelper.cs b/src/Shared/HandyControl_Shared/Tools/Helper/BindingHelper.cs
new file mode 100644
index 00000000..5a2936bb
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Tools/Helper/BindingHelper.cs
@@ -0,0 +1,31 @@
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+
+namespace HandyControl.Tools.Helper
+{
+ public class BindingHelper
+ {
+ public static string GetString(object source, string path)
+ {
+ if (string.IsNullOrEmpty(path))
+ {
+ return source == null ? string.Empty : source.ToString();
+ }
+
+ var tempObj = new DependencyObject();
+
+ var binding = new Binding(path)
+ {
+ Mode = BindingMode.OneTime,
+ Source = source
+ };
+
+ BindingOperations.SetBinding(tempObj, TextSearch.TextProperty, binding);
+ var result = (string) tempObj.GetValue(TextSearch.TextProperty);
+
+ BindingOperations.ClearBinding(tempObj, TextSearch.TextProperty);
+ return result;
+ }
+ }
+}