【发布时间】:2015-11-13 06:43:31
【问题描述】:
我在一个窗口中有两个边框,第一个包含一个通过边距设置大小的列表框。所以我可以改变窗口大小--->边框改变--->列表框改变。我想知道它的宽度是多少,但是宽度属性报告 Nan 而实际宽度报告 0。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border x:Name="Border1" BorderBrush="Gainsboro" BorderThickness="5" CornerRadius="8,8,3,3" Margin="10,10,168.8,10.4" >
<ListBox x:Name="lbButtons" Background="{x:Null}" BorderBrush="{x:Null}" Height="338" Margin="0,0,0.4,0"/>
</Border>
<Border x:Name="Border2" BorderBrush="Gainsboro" BorderThickness="5" CornerRadius="8,8,3,3" Grid.ColumnSpan="2" Margin="263,10,9.2,10" />
</Grid>
这对每个控件都是有效的:如果没有指定,如何知道它的当前大小? 谢谢
【问题讨论】:
-
1 - 你要那个干什么? 2 - 如果
ActualWidth为零,那么您正在查看错误的控件。 -
组件可能尚未显示在您获得其大小的位置。您可以在对象的 loaded 事件中获取正确的 actualWidth。
-
@Jean-ClaudeColette 你是对的!这就是我放置私有 void lbButtons_Loaded(object sender, RoutedEventArgs e) 的原因,此处 ActualWidth 是正确的!您可以将其发布为解决方案,我将对其进行投票。谢谢!