我目前正在使用WPF中的Panel,我注意到关于Width和Height属性,还有另外两个属性称为ActualWidth和ActualHeight。
ActualWidth获取此元素的呈现宽度。这是一个依赖项属性。(继承自FrameworkElement.)Width获取或设置元素的宽度。这是一个依赖项属性。(继承自FrameworkElement.)
参考资料:http://msdn.microsoft.com/en-us/library/system.windows.controls.panel_members.aspx
有谁能指出两者的不同之处,以及何时使用两者之一?
发布于 2010-10-25 02:34:56
当我想将一个元素的宽度或高度绑定到另一个元素时,我发现ActualWidth最有用。
在这个简单的例子中,我有两个按钮并排排列,下面的注释被限制为包含这两个按钮的StackPanel的宽度。
<StackPanel>
<StackPanel Margin="0,12,0,0" Orientation="Horizontal" Name="buttonPanel" HorizontalAlignment="Left" >
<Button Content="Yes - Arm the missile" FontWeight="Bold" HorizontalAlignment="Left"/>
<Button Content="No - Save the world" HorizontalAlignment="Left" Margin="7,0,0,0"/>
</StackPanel>
<TextBlock Text="Please choose whether you want to arm the missile and kill everybody, or save the world by deactivating the missile."
Width="{Binding Path=ActualWidth,ElementName=buttonPanel}" Margin="0,5,0,0" HorizontalAlignment="Left" TextWrapping="Wrap"/>
</StackPanel>发布于 2010-10-21 16:20:57
ActualWidth用于填充值,因此无论何时您需要知道这个数字,您都可以调用Actualwidth而不是宽度,并避免计算。
编辑:删除边距b/c,它不是ActualWidth的一部分。
发布于 2009-03-03 19:46:41
ActualWidth由渲染系统设置,根据其他元素的宽度和总体大小约束可能有所不同。因此,它是无法改变的。Width是一个可以更改的属性,应该用来增加或缩小元素的宽度。
来自MSDN
此属性是基于其他宽度输入和布局系统的计算值。该值是由布局系统本身根据实际呈现传递设置的,因此可能稍微落后于作为输入更改基础的属性(如
Width)的设置值。
https://stackoverflow.com/questions/607827
复制相似问题