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 );
            }

        }

    }
  • 相关阅读:
    F5 BIG-IP之一前期随笔(应用交付网络产品)
    F5 BIG-IP LTM负载均衡策略
    OA-APP增加空间
    如何在Windows服务器上新建一个Powershell.ps1的定时任务
    领益科技:查询AD中被锁定的账号并进行解锁
    使用Python创建简单的HTTP和FTP服务器
    Mysql binlog日志太多,占用大量磁盘空间该如何正确处理
    【vspher运维】ESXI 日志文件
    【vsphere运维】ESXI命令行操作虚拟机
    内容图片切换
  • 原文地址:https://www.cnblogs.com/Jax/p/697412.html
Copyright © 2011-2022 走看看