WPF笔记(2.9和2.10)——Layout

原文:WPF笔记(2.9和2.10)——Layout

2.9讲的是,如果内部设定超过容器大小,怎么办?
StackPanel会裁剪越界部分
DockPanel和Grid会智能判断,从而决定换行。

2.10 自定义布局容器
自定义容器要实现两个方法MeasureOverride和ArrangeOverride,并保证遍历其下的所有子控件,使他们都执行Measure和Arrange方法。

WPF笔记(2.9和2.10)——Layoutusing System;
WPF笔记(2.9和2.10)——Layoutusing System.Windows.Controls;
WPF笔记(2.9和2.10)——Layoutusing System.Windows;
WPF笔记(2.9和2.10)——Layout
WPF笔记(2.9和2.10)——LayoutWPF笔记(2.9和2.10)——Layoutnamespace CustomPanel WPF笔记(2.9和2.10)——Layout{
WPF笔记(2.9和2.10)——LayoutWPF笔记(2.9和2.10)——Layout    public class DiagonalPanel : Panel WPF笔记(2.9和2.10)——Layout{
WPF笔记(2.9和2.10)——Layout
WPF笔记(2.9和2.10)——LayoutWPF笔记(2.9和2.10)——Layout        protected override Size MeasureOverride( Size availableSize ) WPF笔记(2.9和2.10)——Layout{
WPF笔记(2.9和2.10)——Layout            double totalWidth = 0;
WPF笔记(2.9和2.10)——Layout            double totalHeight = 0;
WPF笔记(2.9和2.10)——Layout
WPF笔记(2.9和2.10)——LayoutWPF笔记(2.9和2.10)——Layout            foreach( UIElement child in Children ) WPF笔记(2.9和2.10)——Layout{
WPF笔记(2.9和2.10)——Layout                child.Measure( new Size( double.PositiveInfinity,
WPF笔记(2.9和2.10)——Layout                                         double.PositiveInfinity ) );
WPF笔记(2.9和2.10)——Layout                Size childSize = child.DesiredSize;
WPF笔记(2.9和2.10)——Layout                totalWidth += childSize.Width;
WPF笔记(2.9和2.10)——Layout                totalHeight += childSize.Height;
WPF笔记(2.9和2.10)——Layout            }
WPF笔记(2.9和2.10)——Layout
WPF笔记(2.9和2.10)——Layout            return new Size( totalWidth, totalHeight );
WPF笔记(2.9和2.10)——Layout        }
WPF笔记(2.9和2.10)——Layout
WPF笔记(2.9和2.10)——LayoutWPF笔记(2.9和2.10)——Layout        protected override Size ArrangeOverride( Size finalSize ) WPF笔记(2.9和2.10)——Layout{
WPF笔记(2.9和2.10)——Layout            Point currentPosition = new Point( );
WPF笔记(2.9和2.10)——Layout
WPF笔记(2.9和2.10)——LayoutWPF笔记(2.9和2.10)——Layout            foreach( UIElement child in Children ) WPF笔记(2.9和2.10)——Layout{
WPF笔记(2.9和2.10)——Layout                Rect childRect = new Rect( currentPosition, child.DesiredSize );
WPF笔记(2.9和2.10)——Layout                child.Arrange( childRect );
WPF笔记(2.9和2.10)——Layout                currentPosition.Offset( childRect.Width, childRect.Height );
WPF笔记(2.9和2.10)——Layout            }
WPF笔记(2.9和2.10)——Layout
WPF笔记(2.9和2.10)——Layout            return new Size( currentPosition.X, currentPosition.Y );
WPF笔记(2.9和2.10)——Layout        }
WPF笔记(2.9和2.10)——Layout    }
WPF笔记(2.9和2.10)——Layout}
上一篇:WPF笔记(2.7 文字布局)——Layout


下一篇:WPF笔记(2.3 StackPanel)——Layout