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

        }

    }
  • 相关阅读:
    uTenux-OS-Task再探
    uTenux——LED驱动讲解
    uTenux——HelloWord
    uTenux——重新整理底层驱动库
    template的超级bug
    [LeetCode] Integer to Roman
    [LeetCode] Roman to Integer
    [LeetCode]Flatten Binary Tree to Linked List
    [LeetCode] LRU Cache [Forward]
    [LeetCode] Reorder List
  • 原文地址:https://www.cnblogs.com/Jax/p/697412.html
Copyright © 2011-2022 走看看