From 16c339946ec251f3a5fb4113f0b680b510455e78 Mon Sep 17 00:00:00 2001 From: lindexi Date: Sat, 10 Apr 2021 09:32:32 +0800 Subject: [PATCH 01/53] =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E7=BB=99=20Grid=20?= =?UTF-8?q?=E8=A1=8C=E5=88=97=E5=91=BD=E5=90=8D=E7=BB=91=E5=AE=9A=E7=9A=84?= =?UTF-8?q?=E8=BE=85=E5=8A=A9=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 详细请看 [WPF 给 Grid 的辅助方法 添加行列名称绑定](https://lindexi.gitee.io/post/WPF-%E7%BB%99-Grid-%E7%9A%84%E8%BE%85%E5%8A%A9%E6%96%B9%E6%B3%95-%E6%B7%BB%E5%8A%A0%E8%A1%8C%E5%88%97%E5%90%8D%E7%A7%B0%E7%BB%91%E5%AE%9A.html ) --- .../HandyControl_Shared.projitems | 1 + .../Tools/Extension/GridExtension.cs | 108 ++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 src/Shared/HandyControl_Shared/Tools/Extension/GridExtension.cs diff --git a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems index e7b9e052..a911700e 100644 --- a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems +++ b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems @@ -141,6 +141,7 @@ + diff --git a/src/Shared/HandyControl_Shared/Tools/Extension/GridExtension.cs b/src/Shared/HandyControl_Shared/Tools/Extension/GridExtension.cs new file mode 100644 index 00000000..ef01bc46 --- /dev/null +++ b/src/Shared/HandyControl_Shared/Tools/Extension/GridExtension.cs @@ -0,0 +1,108 @@ +using System; +using System.Windows; +using System.Windows.Controls; + +namespace HandyControl.Tools.Extension +{ + public class GridExtensions + { + public static readonly DependencyProperty NameProperty = DependencyProperty.RegisterAttached( + "Name", typeof(string), typeof(GridExtensions), new PropertyMetadata(default(string))); + + public static void SetName(DependencyObject element, string value) + { + element.SetValue(NameProperty, value); + } + + public static string GetName(DependencyObject element) + { + return (string) element.GetValue(NameProperty); + } + + public static readonly DependencyProperty RowNameProperty = DependencyProperty.RegisterAttached( + "RowName", typeof(string), typeof(GridExtensions), + new PropertyMetadata(default(string), RowName_PropertyChanged)); + + private static void RowName_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + if (d is FrameworkElement frameworkElement) + { + if (e.NewValue is string rowName) + { + if (string.IsNullOrEmpty(rowName)) + { + return; + } + + if (frameworkElement.Parent is Grid grid) + { + for (var i = 0; i < grid.RowDefinitions.Count; i++) + { + var gridRowDefinition = grid.RowDefinitions[i]; + var gridRowName = GetName(gridRowDefinition); + if (!string.IsNullOrEmpty(gridRowName) && + gridRowName.Equals(rowName, StringComparison.Ordinal)) + { + Grid.SetRow(frameworkElement, i); + return; + } + } + } + } + } + } + + public static void SetRowName(DependencyObject element, string value) + { + element.SetValue(RowNameProperty, value); + } + + public static string GetRowName(DependencyObject element) + { + return (string) element.GetValue(RowNameProperty); + } + + public static readonly DependencyProperty ColumnNameProperty = DependencyProperty.RegisterAttached( + "ColumnName", typeof(string), typeof(GridExtensions), + new PropertyMetadata(default(string), ColumnName_PropertyChanged)); + + private static void ColumnName_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + if (d is FrameworkElement frameworkElement) + { + if (e.NewValue is string columnName) + { + if (string.IsNullOrEmpty(columnName)) + { + return; + } + + if (frameworkElement.Parent is Grid grid) + { + for (var i = 0; i < grid.ColumnDefinitions.Count; i++) + { + var gridColumnDefinition = grid.ColumnDefinitions[i]; + var gridColumnName = GetName(gridColumnDefinition); + if (!string.IsNullOrEmpty(gridColumnName) && + gridColumnName.Equals(columnName, StringComparison.Ordinal)) + { + Grid.SetColumn(frameworkElement, i); + return; + } + } + } + } + } + } + + public static void SetColumnName(DependencyObject element, string value) + { + element.SetValue(ColumnNameProperty, value); + } + + public static string GetColumnName(DependencyObject element) + { + return (string) element.GetValue(ColumnNameProperty); + } + } +} From 53c720792ac0e69d183556402988b7cbaae69a0b Mon Sep 17 00:00:00 2001 From: Mahdi Hosseini Date: Sat, 10 Apr 2021 13:30:57 +0430 Subject: [PATCH 02/53] Improve BlurWindow --- .../Controls/Window/BlurWindow.cs | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs b/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs index 9db557f3..a9ad2a6e 100644 --- a/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs +++ b/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs @@ -1,5 +1,4 @@ -using System.Runtime.InteropServices; -using System.Windows.Media; +using System.Runtime.InteropServices; using HandyControl.Data; using HandyControl.Tools; using HandyControl.Tools.Interop; @@ -26,24 +25,28 @@ namespace HandyControl.Controls { var versionInfo = GetSystemVersionInfo(); - if (versionInfo < SystemVersionInfo.Windows10 || - versionInfo >= SystemVersionInfo.Windows10_1903) - { - var colorValue = ResourceHelper.GetResource(ResourceToken.BlurGradientValue); - var color = ColorHelper.ToColor(colorValue); - color = Color.FromRgb(color.R, color.G, color.B); - window.Background = new SolidColorBrush(color); - return; - } - var accentPolicy = new InteropValues.ACCENTPOLICY(); var accentPolicySize = Marshal.SizeOf(accentPolicy); - accentPolicy.AccentState = versionInfo < SystemVersionInfo.Windows10_1809 - ? InteropValues.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND - : InteropValues.ACCENTSTATE.ACCENT_ENABLE_ACRYLICBLURBEHIND; - accentPolicy.AccentFlags = 2; + + if (versionInfo >= SystemVersionInfo.Windows10_1903) + { + accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND; + } + else if (versionInfo >= SystemVersionInfo.Windows10_1809) + { + accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_ACRYLICBLURBEHIND; + } + else if (versionInfo >= SystemVersionInfo.Windows10) + { + accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND; + } + else + { + accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_TRANSPARENTGRADIENT; + } + accentPolicy.GradientColor = ResourceHelper.GetResource(ResourceToken.BlurGradientValue); var accentPtr = Marshal.AllocHGlobal(accentPolicySize); From 786b4d15c5ffcdca47004430231184a25a5b5772 Mon Sep 17 00:00:00 2001 From: Mahdi Date: Thu, 22 Apr 2021 14:46:55 +0430 Subject: [PATCH 03/53] Fix Growl RTL #799 --- src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs | 5 +++-- src/Shared/HandyControl_Shared/Data/Info/GrowlInfo.cs | 3 +++ src/Shared/HandyControl_Shared/Themes/Styles/Growl.xaml | 6 +++--- src/Shared/HandyControl_Shared/Themes/Theme.xaml | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs b/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs index 733991b2..c815411c 100644 --- a/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs +++ b/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs @@ -369,7 +369,8 @@ namespace HandyControl.Controls ConfirmStr = growlInfo.ConfirmStr, CancelStr = growlInfo.CancelStr, Type = growlInfo.Type, - _waitTime = Math.Max(growlInfo.WaitTime, 2) + _waitTime = Math.Max(growlInfo.WaitTime, 2), + FlowDirection = growlInfo.FlowDirection }; GrowlWindow.GrowlPanel.Children.Insert(0, ctl); } @@ -784,7 +785,7 @@ namespace HandyControl.Controls _timerClose?.Stop(); var transform = new TranslateTransform(); _gridMain.RenderTransform = transform; - var animation = AnimationHelper.CreateAnimation(ActualWidth); + var animation = AnimationHelper.CreateAnimation(FlowDirection == FlowDirection.LeftToRight ? ActualWidth : -ActualWidth); animation.Completed += (s, e) => { if (Parent is Panel panel) diff --git a/src/Shared/HandyControl_Shared/Data/Info/GrowlInfo.cs b/src/Shared/HandyControl_Shared/Data/Info/GrowlInfo.cs index 27d25ff1..08ccd6fe 100644 --- a/src/Shared/HandyControl_Shared/Data/Info/GrowlInfo.cs +++ b/src/Shared/HandyControl_Shared/Data/Info/GrowlInfo.cs @@ -1,4 +1,5 @@ using System; +using System.Windows; namespace HandyControl.Data { @@ -29,5 +30,7 @@ namespace HandyControl.Data public bool ShowCloseButton { get; set; } = true; public string Token { get; set; } + + public FlowDirection FlowDirection { get; set; } } } diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Growl.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Growl.xaml index 6c455970..3dc940e7 100644 --- a/src/Shared/HandyControl_Shared/Themes/Styles/Growl.xaml +++ b/src/Shared/HandyControl_Shared/Themes/Styles/Growl.xaml @@ -49,13 +49,13 @@ - +