当前位置: 移动技术网 > IT编程>开发语言>.net > WPF DesiredSize & RenderSize

WPF DesiredSize & RenderSize

2018年10月12日  | 移动技术网IT编程  | 我要评论

胡天戈,爱情公寓413,斗室96小时

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网