zoukankan      html  css  js  c++  java
  • WPF DesiredSize & RenderSize

    DesiredSize

    DesiredSize介绍

    关于DesiredSize的介绍,可以查看最新微软文档对DesiredSize的介绍

    DesiredSize,指的是元素在布局过程中计算所需要的大小。

    通过调用方法Measure计算得到DesiredSize

    1   element.Measure(availableSize); 
    2   var desiredSize = element.DesiredSize;

    DesiredSize的几个概念:

    • DesiredSize是布局过程中使用的
    • DesiredSize是一个只读属性
    • 除了宽高(Width/Height,Max/Min Width/Height)会影响DesiredSize的值,margin也会直接影响DesiredSize

    DesiredSize的宽高

    如下是对DesiredSize的宽高测试Demo:

     1 <Window x:Class="DesiredSizeTest.MainWindow"
     2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     6         xmlns:local="clr-namespace:DesiredSizeTest"
     7         mc:Ignorable="d"
     8         Title="MainWindow" Height="300" Width="500">
     9     <Grid>
    10         <Button x:Name="TestButton" Width="100" Height="30" Margin="10,2" Padding="2,1" VerticalAlignment="Top" Content="测试DesiredSize" Click="TestButton_OnClick"></Button>
    11     </Grid>
    12 </Window>

    根据如上Demo,可以得知此Demo中,

    DesiredSize.Width=Width+水平方向Margin值,

    DesiredSize.Height=Height+竖直方向Margin值

    所以如果只是获取控件的实际宽高,不应该通过DesiredSize.Width/Height获取。

    RenderSize

    RenderSize是布局结束后元素的大小,与ActualHeight、ActualWidth类似。

    所以,WPF布局时,先计算子元素的大小(DesiredSize),然后再得到最终渲染后的父元素大小(RenderSize)。

    可以在OnRender和GetLayoutClip方法执行后,获取下最新的RenderSize,确认是否预期结果。

    关于RenderSize的大小变化,可以监听事件OnRenderSizeChanged

     protected internal virtual void OnRenderSizeChanged (System.Windows.SizeChangedInfo info); 

  • 相关阅读:
    [cf582E]Boolean Function
    [atAGC029F]Construction of a tree
    [atAGC020E]Encoding Subsets
    [gym102769L]Lost Temple
    [atAGC034E]Complete Compress
    [cf566E]Restoring Map
    [atAGC023F]01 on Tree
    [gym102822I]Invaluable Assets
    [gym102900H]Rice Arrangement
    [Offer收割]编程练习赛32
  • 原文地址:https://www.cnblogs.com/kybs0/p/9771756.html
Copyright © 2011-2022 走看看