From 40213047b1cee48144c5a1eee1778ada6f609ca1 Mon Sep 17 00:00:00 2001
From: chr <chrry550@163.com>
Date: 星期四, 07 三月 2024 16:06:08 +0800
Subject: [PATCH] 优化InnerWindow的Resize;

---
 Controls/InnerWindow.xaml.cs |  130 ++++++++++++++++++++-----------------------
 1 files changed, 60 insertions(+), 70 deletions(-)

diff --git a/Controls/InnerWindow.xaml.cs b/Controls/InnerWindow.xaml.cs
index 6de3db6..6c89b76 100644
--- a/Controls/InnerWindow.xaml.cs
+++ b/Controls/InnerWindow.xaml.cs
@@ -1,4 +1,5 @@
-锘縰sing System;
+锘縰sing HandyControl.Controls;
+using System;
 using System.ComponentModel;
 using System.Runtime.CompilerServices;
 using System.Windows;
@@ -19,7 +20,8 @@
     /// InnerWindow.xaml 鐨勪氦浜掗�昏緫
     /// </summary>
     public partial class InnerWindow : UserControl, INotifyPropertyChanged
-    {
+    {
+        #region INotifyPropertyChanged
         public virtual event PropertyChangedEventHandler PropertyChanged;
 
         protected virtual void RaisePropertyChanged(string name)
@@ -34,41 +36,46 @@
             {
                 RaisePropertyChanged(propertyName);
             }
-        }
-
-        public CanvasPosition canvasPosition;
-
+        }
+        #endregion
+
+        #region 灞炴��
+
+        #region Common
         public DragType DragType { get; set; } = DragType.Canvas;
-
+        public CanvasPosition canvasPosition;
+        private Canvas canvas;
+        public WindowState WindowState { get; set; } = WindowState.Normal;
+        public AdornerDecorator ResizeAdornerDecorator { get => VisualTreeHelper.GetChild(this, 0) as AdornerDecorator; }
+
+        private string _Title;
+        public string Title
+        {
+            get { return _Title; }
+            set => RaiseAndSetIfChanged(ref _Title, value);
+        }
+
         public int Zindex
         {
-            get {
+            get
+            {
                 return Canvas.GetZIndex(this);
             }
             set
             {
                 Canvas.SetZIndex(this, value);
-            } 
-        }
-
-        public AdornerDecorator ResizeAdornerDecorator { get => VisualTreeHelper.GetChild(this, 0) as AdornerDecorator; }
-
-
+            }
+        }
+        #endregion
+
+        #region 浜嬩欢
         public event EventHandler MinEvent;
         public event EventHandler MaxEvent;
         public event EventHandler CloseEvent;
-        public event EventHandler ZIndexEvent;
-
-        public WindowState WindowState { get; set; } = WindowState.Normal;
-
-        private string _Title;
-
-        public string Title
-        {
-            get { return _Title; }
-            set => RaiseAndSetIfChanged(ref _Title, value);
-        }
-
+        public event EventHandler ZIndexEvent;
+        #endregion
+
+        #region DependencyProperty
         public Brush HeaderBackground
         {
             get { return (Brush)GetValue(HeaderBackgroundProperty); }
@@ -87,8 +94,11 @@
 
         public static readonly DependencyProperty HeaderFontColorProperty =
             DependencyProperty.Register("HeaderFontColor", typeof(Brush), typeof(ProgramList),
-                new PropertyMetadata(new SolidColorBrush(Color.FromRgb(255, 255, 225))));
-
+                new PropertyMetadata(new SolidColorBrush(Color.FromRgb(255, 255, 225))));
+        #endregion
+
+        #endregion
+
         public InnerWindow() : this(null)
         {
 
@@ -105,26 +115,7 @@
 
             DataContext = this;
             InitializeComponent();
-            SizeChanged += InnerWindow_SizeChanged;
             Loaded += InnerWindow_Loaded;
-        }
-
-        private void InnerWindow_SizeChanged(object sender, SizeChangedEventArgs e)
-        {
-            //throw new NotImplementedException();
-        }
-
-        private void InitThumb()
-        {
-            
-        }
-
-        // 鏂瑰舰宸ュ巶      
-        FrameworkElementFactory GetFactory(Brush back)
-        {
-            FrameworkElementFactory fac = new FrameworkElementFactory(typeof(Rectangle));
-            fac.SetValue(Rectangle.FillProperty, back);
-            return fac;
         }
 
         private void InnerWindow_Loaded(object sender, RoutedEventArgs e)
@@ -140,15 +131,9 @@
                 };
             }
             Loaded -= InnerWindow_Loaded;
-        }
-
-        private Canvas canvas;
-
-        private void Button_Click(object sender, RoutedEventArgs e)
-        {
-            Visibility = Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
-        }
-
+        }
+
+        #region 鎷栨嫿绉诲姩鐩稿叧
         private void DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
         {
             switch (DragType)
@@ -194,12 +179,8 @@
         {
             canvasPosition.Top = Canvas.GetTop(this);
             canvasPosition.Left = Canvas.GetLeft(this);
-        }
-
-        private void UserControl_SizeChanged(object sender, SizeChangedEventArgs e)
-        {
-
-        }
+        }
+        #endregion
 
         /// <summary>
         /// 娣诲姞鍒扮敾甯冧笂
@@ -223,8 +204,23 @@
             }
             Canvas.SetLeft(this, canvasPosition == null ? 0 : canvasPosition.Left);
             Canvas.SetTop(this, canvasPosition == null ? 0 : canvasPosition.Top);
-        }
-
+            canvas.SizeChanged += Canvas_SizeChanged;
+        }
+
+        private void Canvas_SizeChanged(object sender, SizeChangedEventArgs e)
+        {
+            Size newSize = e.NewSize;
+            Size previousSize = e.PreviousSize;
+
+            double xRate = newSize.Width / previousSize.Width;
+            double yRate = newSize.Height / previousSize.Height;
+
+            Canvas.SetLeft(this, Canvas.GetLeft(this) * xRate);
+            Canvas.SetTop(this, Canvas.GetTop(this) * yRate);
+            this.Width = this.Width * xRate;
+            this.Height = this.Height * yRate;
+        }
+
         private void Min_Click(object sender, RoutedEventArgs e)
         {
             MinEvent?.Invoke(this, null);
@@ -254,12 +250,6 @@
         {
 
         }
-    }
-
-    public class InnerWindowProp : NotifyBase
-    {
-
-
     }
 
     public enum DragType

--
Gitblit v1.9.1