From 36008d83e22047948009d4faf0983c9c6126beee Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Fri, 22 Feb 2019 16:51:31 +0800 Subject: [PATCH] Synchronize the Net40 1. synchronize the Net40 2. fixed a bug of coverview --- .../Controls/Cover/CoverView/CoverView.cs | 30 +++++++++++---- .../Data/MessageToken.cs | 2 + .../Data/MessageToken.tt | 3 +- .../HandyControlDemo_Net40.csproj | 8 ++++ .../Properties/Langs/Lang.Designer.cs | 9 +++++ .../Properties/Langs/Lang.en.resx | 3 ++ .../Properties/Langs/Lang.resx | 3 ++ .../Img/LeftMainContent/Label_16x.png | Bin 0 -> 247 bytes .../UserControl/Main/LeftMainContent.xaml | 5 +++ .../UserControl/Styles/LabelDemoCtl.xaml | 17 +++++++++ .../UserControl/Styles/LabelDemoCtl.xaml.cs | 10 +++++ .../Controls/Cover/CoverView/CoverView.cs | 35 +++++++++++++++--- .../Controls/Window/MessageBox.cs | 2 +- 13 files changed, 112 insertions(+), 15 deletions(-) create mode 100644 Net40/HandyControlDemo_Net40/Resources/Img/LeftMainContent/Label_16x.png create mode 100644 Net40/HandyControlDemo_Net40/UserControl/Styles/LabelDemoCtl.xaml create mode 100644 Net40/HandyControlDemo_Net40/UserControl/Styles/LabelDemoCtl.xaml.cs diff --git a/HandyControl/Controls/Cover/CoverView/CoverView.cs b/HandyControl/Controls/Cover/CoverView/CoverView.cs index 03dfa5ab..0e80402c 100644 --- a/HandyControl/Controls/Cover/CoverView/CoverView.cs +++ b/HandyControl/Controls/Cover/CoverView/CoverView.cs @@ -18,6 +18,8 @@ namespace HandyControl.Controls private readonly Dictionary _entryDic = new Dictionary(); + private bool _isRefresh; + public CoverView() { _viewContent = new CoverViewContent(); @@ -171,12 +173,15 @@ namespace HandyControl.Controls if (ItemsHost == null) return; _entryDic.Clear(); + _isRefresh = true; foreach (var item in Items) { AddItem(item); } + _isRefresh = false; + GenerateIndex(); UpdateCoverViewContent(_viewContent.IsOpen); @@ -214,6 +219,10 @@ namespace HandyControl.Controls /// private void UpdateCoverViewContentPosition() { + if (_viewContent.Parent != null) + { + ItemsHost.Children.Remove(_viewContent); + } var total = Items.Count + 1; var totalRow = total / Groups + (total % Groups > 0 ? 1 : 0); if (total <= Groups) @@ -245,6 +254,7 @@ namespace HandyControl.Controls s.CollectionChanged -= InternalCollectionChanged; } + Items.Clear(); ClearItems(); } _itemsSourceInternal = newValue; @@ -269,9 +279,13 @@ namespace HandyControl.Controls private void ClearItems() { _selectedItem = null; - if (_viewContent != null) + _viewContent.Content = null; + _viewContent.ContentTemplate = null; + + if (ItemsHost != null) { - ItemsHost?.Children.Remove(_viewContent); + ItemsHost.Children.Remove(_viewContent); + ItemsHost.Children.Clear(); } _entryDic.Clear(); @@ -330,6 +344,11 @@ namespace HandyControl.Controls } _entryDic[item] = element; ItemsHost.Children.Insert(index, element); + + if (IsLoaded && !_isRefresh && _itemsSourceInternal != null) + { + Items.Insert(index, item); + } } } } @@ -352,8 +371,9 @@ namespace HandyControl.Controls if (e.Action == NotifyCollectionChangedAction.Reset) { + if (_entryDic.Count == 0) return; ClearItems(); - ItemsHost?.Children.Clear(); + Items.Clear(); return; } @@ -376,10 +396,6 @@ namespace HandyControl.Controls { var index = e.NewStartingIndex + count++; InsertItem(index, item); - if (_itemsSourceInternal != null) - { - Items.Insert(index, item); - } } } diff --git a/Net40/HandyControlDemo_Net40/Data/MessageToken.cs b/Net40/HandyControlDemo_Net40/Data/MessageToken.cs index 1669743c..c65216bd 100644 --- a/Net40/HandyControlDemo_Net40/Data/MessageToken.cs +++ b/Net40/HandyControlDemo_Net40/Data/MessageToken.cs @@ -134,6 +134,8 @@ public static readonly string ToolBarDemoCtl = nameof(ToolBarDemoCtl); + public static readonly string LabelDemoCtl = nameof(LabelDemoCtl); + public static readonly string CommonWindow = nameof(CommonWindow); public static readonly string CustomNonClientAreaWindow = nameof(CustomNonClientAreaWindow); diff --git a/Net40/HandyControlDemo_Net40/Data/MessageToken.tt b/Net40/HandyControlDemo_Net40/Data/MessageToken.tt index f25d34ce..8c10a656 100644 --- a/Net40/HandyControlDemo_Net40/Data/MessageToken.tt +++ b/Net40/HandyControlDemo_Net40/Data/MessageToken.tt @@ -72,7 +72,8 @@ var styleList = new List "GroupBoxDemoCtl", "ListViewDemoCtl", "RichTextBoxDemoCtl", - "ToolBarDemoCtl" + "ToolBarDemoCtl", + "LabelDemoCtl" }; var windowList = new List { diff --git a/Net40/HandyControlDemo_Net40/HandyControlDemo_Net40.csproj b/Net40/HandyControlDemo_Net40/HandyControlDemo_Net40.csproj index 4fdc78d9..326d0fa0 100644 --- a/Net40/HandyControlDemo_Net40/HandyControlDemo_Net40.csproj +++ b/Net40/HandyControlDemo_Net40/HandyControlDemo_Net40.csproj @@ -241,6 +241,9 @@ GroupBoxDemoCtl.xaml + + LabelDemoCtl.xaml + ListViewDemoCtl.xaml @@ -580,6 +583,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -718,6 +725,7 @@ TextTemplatingFileGenerator MessageToken.cs + diff --git a/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.Designer.cs b/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.Designer.cs index 5c2fd6c9..a4e7d112 100644 --- a/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.Designer.cs +++ b/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.Designer.cs @@ -564,6 +564,15 @@ namespace HandyControlDemo.Properties.Langs { } } + /// + /// 查找类似 标签 的本地化字符串。 + /// + public static string Label { + get { + return ResourceManager.GetString("Label", resourceCulture); + } + } + /// /// 查找类似 列表框 的本地化字符串。 /// diff --git a/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.en.resx b/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.en.resx index 966dc242..3ea49fc7 100644 --- a/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.en.resx +++ b/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.en.resx @@ -495,4 +495,7 @@ Sec + + Label + \ No newline at end of file diff --git a/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.resx b/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.resx index 88e899a7..0b8bdbc9 100644 --- a/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.resx +++ b/Net40/HandyControlDemo_Net40/Properties/Langs/Lang.resx @@ -495,4 +495,7 @@ 秒 + + 标签 + \ No newline at end of file diff --git a/Net40/HandyControlDemo_Net40/Resources/Img/LeftMainContent/Label_16x.png b/Net40/HandyControlDemo_Net40/Resources/Img/LeftMainContent/Label_16x.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8cfa770ff26b27f5bb4e4cabec0c9966e97282 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpx{bR z7srr_xZcSdd6^Y?T=QFIcg~YFVrSlPPV|e8i(~q!?z$yM#P_v2{$i56S+)K{;@o?` zHI=>_uaMoH-t$pw=^e!u{||1t)eRjnnoI99>gdv zad{Pv%pE^&HB4yhUw?ul^Ub4r_8n3^=M{TJ|0yj=e0)8s@gGmtlEg>HB}yxoJw0@P u$-y6%>8^7`KDtXCdo^oz`>d^x^825xUH9fX$10$s89ZJ6T-G@yGywn`erU!3 literal 0 HcmV?d00001 diff --git a/Net40/HandyControlDemo_Net40/UserControl/Main/LeftMainContent.xaml b/Net40/HandyControlDemo_Net40/UserControl/Main/LeftMainContent.xaml index 3b7dceee..eb776ae3 100644 --- a/Net40/HandyControlDemo_Net40/UserControl/Main/LeftMainContent.xaml +++ b/Net40/HandyControlDemo_Net40/UserControl/Main/LeftMainContent.xaml @@ -159,6 +159,11 @@ + + + + + diff --git a/Net40/HandyControlDemo_Net40/UserControl/Styles/LabelDemoCtl.xaml b/Net40/HandyControlDemo_Net40/UserControl/Styles/LabelDemoCtl.xaml new file mode 100644 index 00000000..dc42f1d8 --- /dev/null +++ b/Net40/HandyControlDemo_Net40/UserControl/Styles/LabelDemoCtl.xaml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/Net40/HandyControlDemo_Net40/UserControl/Styles/LabelDemoCtl.xaml.cs b/Net40/HandyControlDemo_Net40/UserControl/Styles/LabelDemoCtl.xaml.cs new file mode 100644 index 00000000..aaa52331 --- /dev/null +++ b/Net40/HandyControlDemo_Net40/UserControl/Styles/LabelDemoCtl.xaml.cs @@ -0,0 +1,10 @@ +namespace HandyControlDemo.UserControl +{ + public partial class LabelDemoCtl + { + public LabelDemoCtl() + { + InitializeComponent(); + } + } +} diff --git a/Net40/HandyControl_Net40/Controls/Cover/CoverView/CoverView.cs b/Net40/HandyControl_Net40/Controls/Cover/CoverView/CoverView.cs index 65984c6c..5cfd8a7f 100644 --- a/Net40/HandyControl_Net40/Controls/Cover/CoverView/CoverView.cs +++ b/Net40/HandyControl_Net40/Controls/Cover/CoverView/CoverView.cs @@ -18,6 +18,8 @@ namespace HandyControl.Controls private readonly Dictionary _entryDic = new Dictionary(); + private bool _isRefresh; + public CoverView() { _viewContent = new CoverViewContent(); @@ -171,12 +173,15 @@ namespace HandyControl.Controls if (ItemsHost == null) return; _entryDic.Clear(); + _isRefresh = true; foreach (var item in Items) { AddItem(item); } + _isRefresh = false; + GenerateIndex(); UpdateCoverViewContent(_viewContent.IsOpen); @@ -214,6 +219,10 @@ namespace HandyControl.Controls /// private void UpdateCoverViewContentPosition() { + if (_viewContent.Parent != null) + { + ItemsHost.Children.Remove(_viewContent); + } var total = Items.Count + 1; var totalRow = total / Groups + (total % Groups > 0 ? 1 : 0); if (total <= Groups) @@ -245,6 +254,7 @@ namespace HandyControl.Controls s.CollectionChanged -= InternalCollectionChanged; } + Items.Clear(); ClearItems(); } _itemsSourceInternal = newValue; @@ -269,9 +279,13 @@ namespace HandyControl.Controls private void ClearItems() { _selectedItem = null; - if (_viewContent != null) + _viewContent.Content = null; + _viewContent.ContentTemplate = null; + + if (ItemsHost != null) { - ItemsHost?.Children.Remove(_viewContent); + ItemsHost.Children.Remove(_viewContent); + ItemsHost.Children.Clear(); } _entryDic.Clear(); @@ -330,6 +344,11 @@ namespace HandyControl.Controls } _entryDic[item] = element; ItemsHost.Children.Insert(index, element); + + if (IsLoaded && !_isRefresh && _itemsSourceInternal != null) + { + Items.Insert(index, item); + } } } } @@ -350,6 +369,14 @@ namespace HandyControl.Controls { if (ItemsHost == null) return; + if (e.Action == NotifyCollectionChangedAction.Reset) + { + if (_entryDic.Count == 0) return; + ClearItems(); + Items.Clear(); + return; + } + if (e.OldItems != null) { foreach (var item in e.OldItems) @@ -369,10 +396,6 @@ namespace HandyControl.Controls { var index = e.NewStartingIndex + count++; InsertItem(index, item); - if (_itemsSourceInternal != null) - { - Items.Insert(index, item); - } } } diff --git a/Net40/HandyControl_Net40/Controls/Window/MessageBox.cs b/Net40/HandyControl_Net40/Controls/Window/MessageBox.cs index 9cafe4a8..7afa3657 100644 --- a/Net40/HandyControl_Net40/Controls/Window/MessageBox.cs +++ b/Net40/HandyControl_Net40/Controls/Window/MessageBox.cs @@ -297,7 +297,7 @@ namespace HandyControl.Controls Owner = ownerWindow, WindowStartupLocation = ownerIsNull ? WindowStartupLocation.CenterScreen : WindowStartupLocation.CenterOwner, ShowTitle = true, - Title = caption, + Title = caption ?? string.Empty, Topmost = ownerIsNull, _messageBoxResult = defaultResult };