| | |
| | | } |
| | | |
| | | public int CanvasChildrenCount { get; private set; } = 0; |
| | |
|
| | | #region InnerWindow操作逻辑
|
| | | /// <summary>
|
| | | /// 设置InnerWindow
|
| | | /// </summary>
|
| | | /// <param name="inner"></param>
|
| | | private void HandleInnerWindow(InnerWindow inner) |
| | | { |
| | | inner.MinEvent += InnerWindowMin; |
| | |
| | | inner.Zindex = CanvasChildrenCount++; |
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// InnerWindow焦点事件
|
| | | /// </summary>
|
| | | /// <param name="sender"></param>
|
| | | /// <param name="e"></param>
|
| | | private void Inner_GotFocus(object sender, RoutedEventArgs e)
|
| | | {
|
| | | CanvasHelper.SetTopZIndex(sender as InnerWindow, WorkArea, typeof(InnerWindow));
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// InnerWindow ZIndex切换事件
|
| | | /// </summary>
|
| | | /// <param name="sender"></param>
|
| | | /// <param name="e"></param>
|
| | | private void Inner_ZIndexEvent(object sender, EventArgs e) |
| | | { |
| | | CanvasHelper.SetTopZIndex(sender as InnerWindow, WorkArea, typeof(InnerWindow)); |
| | | } |
| | | |
| | | private void HandleMinInnerWindow(InnerWindow inner) |
| | | { |
| | | MinInnerWindow min = new MinInnerWindow(inner); |
| | | min.MaxEvent += MinInnerWindowMax; |
| | | min.CloseEvent += MinInnerWindowClose; |
| | | BottomBar.AddMinWindow(min); |
| | | } |
| | | |
| | | /// <summary>
|
| | | /// InnerWindow最小化事件
|
| | | /// </summary>
|
| | | /// <param name="sender"></param>
|
| | | /// <param name="e"></param>
|
| | | private void InnerWindowMin(object sender, System.EventArgs e) |
| | | { |
| | | InnerWindow inner = sender as InnerWindow; |
| | |
| | | HandleMinInnerWindow(inner); |
| | | } |
| | | |
| | | /// <summary>
|
| | | /// InnerWindow最大化事件
|
| | | /// </summary>
|
| | | /// <param name="sender"></param>
|
| | | /// <param name="e"></param>
|
| | | private void InnerWindowMax(object sender, System.EventArgs e) |
| | | { |
| | | InnerWindow inner = sender as InnerWindow; |
| | |
| | | inner.Height = inner.canvasPosition.Height; |
| | | inner.WindowState = WindowState.Normal; |
| | | } |
| | | else{ |
| | | else
|
| | | {
|
| | | Canvas.SetLeft(inner, 0); |
| | | Canvas.SetTop(inner, 0); |
| | | inner.Width = WorkArea.ActualWidth; |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary>
|
| | | /// 重设大小
|
| | | /// </summary>
|
| | | /// <param name="sender"></param>
|
| | | /// <param name="e"></param>
|
| | | private void WorkControl_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;
|
| | | //for (int i = 0; i < VisualTreeHelper.GetChildrenCount(WorkArea); i++)
|
| | | //{
|
| | | // UIElement child = VisualTreeHelper.GetChild(WorkArea, i) as UIElement;
|
| | | // Canvas.SetLeft(child, Canvas.GetLeft(child) * xRate);
|
| | | // Canvas.SetTop(child, Canvas.GetTop(child) * yRate);
|
| | | //}
|
| | |
|
| | | //for (int i = 0; i < VisualTreeHelper.GetChildrenCount(WorkArea); i++)
|
| | | //{
|
| | | // UIElement child = VisualTreeHelper.GetChild(WorkArea, i) as UIElement;
|
| | | // if (Canvas.GetLeft(child) >= newSize.Width)
|
| | | // {
|
| | | // Canvas.SetLeft(child, Canvas.GetLeft(child) + newSize.Width - previousSize.Width);
|
| | | // }
|
| | | // if (Canvas.GetTop(child) >= newSize.Height)
|
| | | // {
|
| | | // Canvas.SetTop(child, Canvas.GetTop(child) + newSize.Height - previousSize.Height);
|
| | | // }
|
| | | //}
|
| | | }
|
| | | #endregion
|
| | |
|
| | | #region 底部MinInnerWindow相关
|
| | | /// <summary>
|
| | | /// 底部MinInnerWindow处理
|
| | | /// </summary>
|
| | | /// <param name="inner"></param>
|
| | | private void HandleMinInnerWindow(InnerWindow inner)
|
| | | {
|
| | | MinInnerWindow min = new MinInnerWindow(inner);
|
| | | min.MaxEvent += MinInnerWindowMax;
|
| | | min.CloseEvent += MinInnerWindowClose;
|
| | | BottomBar.AddMinWindow(min);
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 底部MinInnerWindow展开
|
| | | /// </summary>
|
| | | /// <param name="sender"></param>
|
| | | /// <param name="e"></param>
|
| | | private void MinInnerWindowMax(object sender, System.EventArgs e) |
| | | { |
| | | MinInnerWindow min = sender as MinInnerWindow; |
| | |
| | | BottomBar.RemoveMinWindow(min); |
| | | } |
| | | |
| | | /// <summary>
|
| | | /// 底部MinInnerWin关闭
|
| | | /// </summary>
|
| | | /// <param name="sender"></param>
|
| | | /// <param name="e"></param>
|
| | | private void MinInnerWindowClose(object sender, System.EventArgs e) |
| | | { |
| | | MinInnerWindow min = sender as MinInnerWindow; |
| | | BottomBar.RemoveMinWindow(min); |
| | | } |
| | | |
| | | |
| | | private void WorkControl_SizeChanged(object sender, SizeChangedEventArgs e) |
| | | { |
| | | Size newSize = e.NewSize; |
| | | Size previousSize = e.PreviousSize; |
| | | |
| | | for (int i = 0; i < VisualTreeHelper.GetChildrenCount(WorkArea); i++) |
| | | { |
| | | UIElement child = VisualTreeHelper.GetChild(WorkArea, i) as UIElement; |
| | | if (Canvas.GetLeft(child) >= newSize.Width) |
| | | { |
| | | Canvas.SetLeft(child, Canvas.GetLeft(child) + newSize.Width - previousSize.Width); |
| | | } |
| | | if (Canvas.GetTop(child) >= newSize.Height) |
| | | { |
| | | Canvas.SetTop(child, Canvas.GetTop(child) + newSize.Height - previousSize.Height); |
| | | } |
| | | } |
| | | } |
| | | |
| | | #endregion
|
| | | |
| | | public void OnTabChange(object sender, SelectionChangedEventArgs args) |
| | | { |