From 84463bef4b410d731b8bc7d4d6a27189af253a36 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Sat, 30 Nov 2019 00:56:41 +0800 Subject: [PATCH 01/11] init branch --- .../HandyControlDemo_Core30.csproj | 3 +++ .../HandyControlDemo_Net_40.csproj | 3 +++ .../HandyControlDemo_Net_GE45.csproj | 3 +++ .../HandyControlDemo_Shared/Data/DemoInfo.json | 3 ++- .../HandyControlDemo_Shared.projitems | 7 +++++++ .../Img/LeftMainContent/TransformRelative_16x.png | Bin 0 -> 169 bytes .../Controls/RelativePanelDemoCtl.xaml | 8 ++++++++ .../Controls/RelativePanelDemoCtl.xaml.cs | 10 ++++++++++ .../Controls/Panel/RelativePanel.cs | 9 +++++++++ .../HandyControl_Shared.projitems | 1 + 10 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/TransformRelative_16x.png create mode 100644 src/Shared/HandyControlDemo_Shared/UserControl/Controls/RelativePanelDemoCtl.xaml create mode 100644 src/Shared/HandyControlDemo_Shared/UserControl/Controls/RelativePanelDemoCtl.xaml.cs create mode 100644 src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs diff --git a/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj b/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj index e9ef66a4..afdbaac0 100644 --- a/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj +++ b/src/Core_30/HandyControlDemo_Core_30/HandyControlDemo_Core30.csproj @@ -448,6 +448,9 @@ Resources\Img\LeftMainContent\View_Portrait_16x.png + + Resources\Img\LeftMainContent\TransformRelative_16x.png + 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 e5a658ad..65e72972 100644 --- a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj +++ b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj @@ -430,6 +430,9 @@ TextTemplatingFileGenerator MessageToken.cs + + Resources\Img\LeftMainContent\TransformRelative_16x.png + Resources\Img\LeftMainContent\View_Portrait_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 1fa83a40..8a6b97f4 100644 --- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj +++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj @@ -496,6 +496,9 @@ TextTemplatingFileGenerator MessageToken.cs + + Resources\Img\LeftMainContent\TransformRelative_16x.png + Resources\Img\LeftMainContent\View_Portrait_16x.png diff --git a/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json b/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json index 6c5f4f76..92439c37 100644 --- a/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json +++ b/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json @@ -40,7 +40,7 @@ [ "Gravatar", "GravatarDemoCtl", "User_16x", "" ], [ "Badge", "BadgeDemoCtl", "DotLarge_16x", "" ], [ "GotoTop", "GotoTopDemoCtl", "GoToTop_16x", "" ], - [ "SplitButton", "SplitButtonDemoCtl", "SplitButton_16x", "1" ], + [ "SplitButton", "SplitButtonDemoCtl", "SplitButton_16x", "" ], [ "ButtonGroup", "ButtonGroupDemoCtl", "ButtonGroup_16x", "" ], [ "ProgressButton", "ProgressButtonDemoCtl", "ProgressButton_16x", "" ], [ "ChatBubble", "ChatBubbleDemoCtl", "Bubble_16xLG", "" ], @@ -68,6 +68,7 @@ [ "Divider", "DividerDemoCtl", "DottedSplitter_16x", "1" ], [ "CirclePanel", "CirclePanelDemoCtl", "ColorWheel_16x", "" ], [ "Grid", "GridDemoCtl", "GridPane_16x", "" ], + [ "RelativePanel", "RelativePanelDemoCtl", "TransformRelative_16x", "1" ], [ "WaterfallPanel", "WaterfallPanelDemoCtl", "Panel_16x", "" ], [ "HoneycombPanel", "HoneycombPanelDemoCtl", "PolygonHexagon_16x", "" ], [ "TransitioningContentControl", "TransitioningContentControlDemoCtl", "TransitioningContentControl_16x", "" ], diff --git a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems index 6d09742c..4fe569a5 100644 --- a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems +++ b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems @@ -182,6 +182,9 @@ RateDemoCtl.xaml + + RelativePanelDemoCtl.xaml + RunningBlockDemoCtl.xaml @@ -640,6 +643,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile diff --git a/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/TransformRelative_16x.png b/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/TransformRelative_16x.png new file mode 100644 index 0000000000000000000000000000000000000000..bf04a7a9a92bf580162b967a05aafe97208dde84 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpkTD8 zi(^Pd+|kL7Tn7v|SZZhg|L=XN`}!0a7QyY=nyQClMA8x+6O+?kcTRH%_5RkYwlkqm zJBaJfnFc2Nv`7EuC|njh@JU87w?6CtRE6oKeg_(urm$q%pML+oin(`kw!O>ou5UnV O7(8A5T-G@yGywpb_&a9+ literal 0 HcmV?d00001 diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/RelativePanelDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/RelativePanelDemoCtl.xaml new file mode 100644 index 00000000..b59bb5c8 --- /dev/null +++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/RelativePanelDemoCtl.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/RelativePanelDemoCtl.xaml.cs b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/RelativePanelDemoCtl.xaml.cs new file mode 100644 index 00000000..747c9b57 --- /dev/null +++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/RelativePanelDemoCtl.xaml.cs @@ -0,0 +1,10 @@ +namespace HandyControlDemo.UserControl +{ + public partial class RelativePanelDemoCtl + { + public RelativePanelDemoCtl() + { + InitializeComponent(); + } + } +} diff --git a/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs b/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs new file mode 100644 index 00000000..0c48f95a --- /dev/null +++ b/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs @@ -0,0 +1,9 @@ +using System.Windows.Controls; + +namespace HandyControl.Controls +{ + public class RelativePanel : Panel + { + + } +} diff --git a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems index bb56f6d3..233e5817 100644 --- a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems +++ b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems @@ -35,6 +35,7 @@ + From 23b9c41301f54b2cdc614525387e50a6d874a776 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Sat, 30 Nov 2019 01:16:57 +0800 Subject: [PATCH 02/11] add basic codes --- .../Controls/Panel/RelativePanel.cs | 168 +++++++++++++++++- 1 file changed, 167 insertions(+), 1 deletion(-) diff --git a/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs b/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs index 0c48f95a..918c18c4 100644 --- a/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs +++ b/src/Shared/HandyControl_Shared/Controls/Panel/RelativePanel.cs @@ -1,9 +1,175 @@ -using System.Windows.Controls; +using System.Windows; +using System.Windows.Controls; +using HandyControl.Data; namespace HandyControl.Controls { public class RelativePanel : Panel { + #region Panel alignment relationships + public static readonly DependencyProperty AlignLeftWithPanelProperty = DependencyProperty.RegisterAttached( + "AlignLeftWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(ValueBoxes.FalseBox)); + + public static void SetAlignLeftWithPanel(DependencyObject element, bool value) + => element.SetValue(AlignLeftWithPanelProperty, value); + + public static bool GetAlignLeftWithPanel(DependencyObject element) + => (bool) element.GetValue(AlignLeftWithPanelProperty); + + public static readonly DependencyProperty AlignTopWithPanelProperty = DependencyProperty.RegisterAttached( + "AlignTopWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(ValueBoxes.FalseBox)); + + public static void SetAlignTopWithPanel(DependencyObject element, bool value) + => element.SetValue(AlignTopWithPanelProperty, value); + + public static bool GetAlignTopWithPanel(DependencyObject element) + => (bool) element.GetValue(AlignTopWithPanelProperty); + + public static readonly DependencyProperty AlignRightWithPanelProperty = DependencyProperty.RegisterAttached( + "AlignRightWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(ValueBoxes.FalseBox)); + + public static void SetAlignRightWithPanel(DependencyObject element, bool value) + => element.SetValue(AlignRightWithPanelProperty, value); + + public static bool GetAlignRightWithPanel(DependencyObject element) + => (bool) element.GetValue(AlignRightWithPanelProperty); + + public static readonly DependencyProperty AlignBottomWithPanelProperty = DependencyProperty.RegisterAttached( + "AlignBottomWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(ValueBoxes.FalseBox)); + + public static void SetAlignBottomWithPanel(DependencyObject element, bool value) + => element.SetValue(AlignBottomWithPanelProperty, value); + + public static bool GetAlignBottomWithPanel(DependencyObject element) + => (bool) element.GetValue(AlignBottomWithPanelProperty); + + public static readonly DependencyProperty AlignHorizontalCenterWithPanelProperty = DependencyProperty.RegisterAttached( + "AlignHorizontalCenterWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(ValueBoxes.FalseBox)); + + public static void SetAlignHorizontalCenterWithPanel(DependencyObject element, bool value) + => element.SetValue(AlignHorizontalCenterWithPanelProperty, value); + + public static bool GetAlignHorizontalCenterWithPanel(DependencyObject element) + => (bool) element.GetValue(AlignHorizontalCenterWithPanelProperty); + + public static readonly DependencyProperty AlignVerticalCenterWithPanelProperty = DependencyProperty.RegisterAttached( + "AlignVerticalCenterWithPanel", typeof(bool), typeof(RelativePanel), new PropertyMetadata(ValueBoxes.FalseBox)); + + public static void SetAlignVerticalCenterWithPanel(DependencyObject element, bool value) + => element.SetValue(AlignVerticalCenterWithPanelProperty, value); + + public static bool GetAlignVerticalCenterWithPanel(DependencyObject element) + => (bool) element.GetValue(AlignVerticalCenterWithPanelProperty); + + #endregion + + #region Sibling alignment relationships + + public static readonly DependencyProperty AlignLeftWithProperty = DependencyProperty.RegisterAttached( + "AlignLeftWith", typeof(string), typeof(RelativePanel), new PropertyMetadata(default(string))); + + public static void SetAlignLeftWith(DependencyObject element, string value) + => element.SetValue(AlignLeftWithProperty, value); + + public static string GetAlignLeftWith(DependencyObject element) + => (string) element.GetValue(AlignLeftWithProperty); + + public static readonly DependencyProperty AlignTopWithProperty = DependencyProperty.RegisterAttached( + "AlignTopWith", typeof(string), typeof(RelativePanel), new PropertyMetadata(default(string))); + + public static void SetAlignTopWith(DependencyObject element, string value) + => element.SetValue(AlignTopWithProperty, value); + + public static string GetAlignTopWith(DependencyObject element) + => (string) element.GetValue(AlignTopWithProperty); + + public static readonly DependencyProperty AlignRightWithProperty = DependencyProperty.RegisterAttached( + "AlignRightWith", typeof(string), typeof(RelativePanel), new PropertyMetadata(default(string))); + + public static void SetAlignRightWith(DependencyObject element, string value) + => element.SetValue(AlignRightWithProperty, value); + + public static string GetAlignRightWith(DependencyObject element) + => (string) element.GetValue(AlignRightWithProperty); + + public static readonly DependencyProperty AlignBottomWithProperty = DependencyProperty.RegisterAttached( + "AlignBottomWith", typeof(string), typeof(RelativePanel), new PropertyMetadata(default(string))); + + public static void SetAlignBottomWith(DependencyObject element, string value) + => element.SetValue(AlignBottomWithProperty, value); + + public static string GetAlignBottomWith(DependencyObject element) + => (string) element.GetValue(AlignBottomWithProperty); + + public static readonly DependencyProperty AlignHorizontalCenterWithProperty = DependencyProperty.RegisterAttached( + "AlignHorizontalCenterWith", typeof(string), typeof(RelativePanel), new PropertyMetadata(default(string))); + + public static void SetAlignHorizontalCenterWith(DependencyObject element, string value) + => element.SetValue(AlignHorizontalCenterWithProperty, value); + + public static string GetAlignHorizontalCenterWith(DependencyObject element) + => (string) element.GetValue(AlignHorizontalCenterWithProperty); + + public static readonly DependencyProperty AlignVerticalCenterWithProperty = DependencyProperty.RegisterAttached( + "AlignVerticalCenterWith", typeof(string), typeof(RelativePanel), new PropertyMetadata(default(string))); + + public static void SetAlignVerticalCenterWith(DependencyObject element, string value) + => element.SetValue(AlignVerticalCenterWithProperty, value); + + public static string GetAlignVerticalCenterWith(DependencyObject element) + => (string) element.GetValue(AlignVerticalCenterWithProperty); + + #endregion + + #region Sibling positional relationships + + public static readonly DependencyProperty LeftOfProperty = DependencyProperty.RegisterAttached( + "LeftOf", typeof(string), typeof(RelativePanel), new PropertyMetadata(default(string))); + + public static void SetLeftOf(DependencyObject element, string value) + => element.SetValue(LeftOfProperty, value); + + public static string GetLeftOf(DependencyObject element) + => (string)element.GetValue(LeftOfProperty); + + public static readonly DependencyProperty AboveProperty = DependencyProperty.RegisterAttached( + "Above", typeof(string), typeof(RelativePanel), new PropertyMetadata(default(string))); + + public static void SetAbove(DependencyObject element, string value) + => element.SetValue(AboveProperty, value); + + public static string GetAbove(DependencyObject element) + => (string)element.GetValue(AboveProperty); + + public static readonly DependencyProperty RightOfProperty = DependencyProperty.RegisterAttached( + "RightOf", typeof(string), typeof(RelativePanel), new PropertyMetadata(default(string))); + + public static void SetRightOf(DependencyObject element, string value) + => element.SetValue(RightOfProperty, value); + + public static string GetRightOf(DependencyObject element) + => (string)element.GetValue(RightOfProperty); + + public static readonly DependencyProperty BelowProperty = DependencyProperty.RegisterAttached( + "Below", typeof(string), typeof(RelativePanel), new PropertyMetadata(default(string))); + + public static void SetBelow(DependencyObject element, string value) + => element.SetValue(BelowProperty, value); + + public static string GetBelow(DependencyObject element) + => (string) element.GetValue(BelowProperty); + + #endregion + + protected override Size MeasureOverride(Size availableSize) + { + return availableSize; + } + + protected override Size ArrangeOverride(Size arrangeSize) + { + return arrangeSize; + } } } From 1e913c27f42e1932459b1f7085b9338cee7d1887 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Mon, 2 Dec 2019 22:22:14 +0800 Subject: [PATCH 03/11] fixed a bug of GrowlWindow --- .../Controls/Growl/Growl.cs | 2 +- .../Controls/Growl/GrowlWindow.cs | 19 +++++++++++-------- .../Themes/Styles/Growl.xaml | 9 --------- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs b/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs index 8e285916..c62a0a39 100644 --- a/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs +++ b/src/Shared/HandyControl_Shared/Controls/Growl/Growl.cs @@ -800,7 +800,7 @@ namespace HandyControl.Controls _timerClose?.Stop(); var transform = new TranslateTransform(); _gridMain.RenderTransform = transform; - var animation = AnimationHelper.CreateAnimation(MaxWidth); + var animation = AnimationHelper.CreateAnimation(ActualWidth); animation.Completed += (s, e) => { if (Parent is Panel panel) diff --git a/src/Shared/HandyControl_Shared/Controls/Growl/GrowlWindow.cs b/src/Shared/HandyControl_Shared/Controls/Growl/GrowlWindow.cs index 38c75cd5..662dfcc1 100644 --- a/src/Shared/HandyControl_Shared/Controls/Growl/GrowlWindow.cs +++ b/src/Shared/HandyControl_Shared/Controls/Growl/GrowlWindow.cs @@ -3,24 +3,27 @@ using System.Windows.Controls; namespace HandyControl.Controls { - [TemplatePart(Name = ElementGrowPanel, Type = typeof(Panel))] internal class GrowlWindow : Window { - private const string ElementGrowPanel = "PART_GrowPanel"; - public Panel GrowlPanel { get; set; } public GrowlWindow() { WindowStyle = WindowStyle.None; AllowsTransparency = true; - } - public override void OnApplyTemplate() - { - base.OnApplyTemplate(); + GrowlPanel = new StackPanel + { + VerticalAlignment = VerticalAlignment.Top, + Margin = new Thickness(0, 10, 10, 10) + }; - GrowlPanel = GetTemplateChild(ElementGrowPanel) as Panel; + Content = new ScrollViewer + { + VerticalScrollBarVisibility = ScrollBarVisibility.Hidden, + IsEnableInertia = true, + Content = GrowlPanel + }; } public void Init() diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Growl.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Growl.xaml index f54f7525..796609c5 100644 --- a/src/Shared/HandyControl_Shared/Themes/Styles/Growl.xaml +++ b/src/Shared/HandyControl_Shared/Themes/Styles/Growl.xaml @@ -19,15 +19,6 @@ - - - - - - - - -