[我目前正在WPF中使用Panel
,并且我注意到关于Width
和Height
属性,还有两个其他属性称为ActualWidth
和ActualHeight
。
ActualWidth
获取此对象的渲染宽度元件。这是一个依赖属性。 (继承自FrameworkElement。)
Width
获取或设置元素的宽度。这是一个依赖属性。(继承自FrameworkElement。)
参考:MSDN
任何人都可以指出两者之间的区别以及何时使用其中之一?
Width
/ Height
是requested or layout大小。如果设置为“自动”,则在后面的代码中访问属性时,该值为double.NaN
。
ActualWidth
/ ActualHeight
和RenderSize.Width
/ RenderSize.Height
都返回元素的渲染大小,因为RenderSize的类型为[[Size。如果您想要/需要物品的实际尺寸,请使用以下任何属性。
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>
ActualWidth
会考虑填充值,因此,只要您需要知道该数字,就可以调用Actualwidth
而不是宽度,从而避免计算。 ActualWidth
由渲染系统设置,并且可能会因其他元素的宽度和整体大小限制而有所不同。结果,无法更改。 Width
是可以更改的属性,应用于增加或减小元素的宽度。不使用ActualWidth
Width
属性,但不能设置ActualWidth
属性。