zoukankan      html  css  js  c++  java
  • WPF笔记(2.9和2.10)——Layout

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

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

    using System;
    using System.Windows.Controls;
    using System.Windows;

    namespace CustomPanel {
        
    public class DiagonalPanel : Panel {

            
    protected override Size MeasureOverride( Size availableSize ) {
                
    double totalWidth = 0;
                
    double totalHeight = 0;

                
    foreach( UIElement child in Children ) {
                    child.Measure( 
    new Size( double.PositiveInfinity,
                                             
    double.PositiveInfinity ) );
                    Size childSize 
    = child.DesiredSize;
                    totalWidth 
    += childSize.Width;
                    totalHeight 
    += childSize.Height;
                }


                
    return new Size( totalWidth, totalHeight );
            }


            
    protected override Size ArrangeOverride( Size finalSize ) {
                Point currentPosition 
    = new Point( );

                
    foreach( UIElement child in Children ) {
                    Rect childRect 
    = new Rect( currentPosition, child.DesiredSize );
                    child.Arrange( childRect );
                    currentPosition.Offset( childRect.Width, childRect.Height );
                }


                
    return new Size( currentPosition.X, currentPosition.Y );
            }

        }

    }
  • 相关阅读:
    [转]用C++实现跨平台游戏开发之Irrlicht引擎
    Struts 2中的constant
    Xming + PuTTY 在Windows下远程Linux主机使用图形界面的程序
    eclipse、myeclipse、aptana 安装spket ,zen coding等插件
    第三方软件源——OpenSUSE
    opensuse 12.2 安装手记
    eclipse j2ee 开发环境配置
    多线程浏览器编程总结
    c#.net设计规范一
    正则表达式系统学习之一
  • 原文地址:https://www.cnblogs.com/Jax/p/697412.html
Copyright © 2011-2022 走看看