为什么我的网格宽度是NaN? [英] Why is my Grid's width NaN?
本文介绍了为什么我的网格宽度是NaN?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在视图中有以下标记。当我在视图启动代码期间获得WindowContainer.Width
时,它返回NaN
。
<Border BorderThickness="10">
<StackPanel x:Name="Panel" Orientation="Vertical" >
<Grid x:Name="WindowContainer" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Loaded="WindowContainer_OnLoaded">
<delphi:Win32WindowHost x:Name="Host" />
</Grid>
<TextBlock x:Name="InfoTextBlock" HorizontalAlignment="Right" />
</StackPanel>
</Border>
Stretch
是使网格拉伸以容纳其所有内容,还是填充其容器?我希望它拉伸以填满Border
容器,并具有适当的double
宽度,我可以用它来调整浮动窗口的大小使其大小相同。
推荐答案
Does Stretch make the grid stretch to accomodate all its content, or to fill its container?
来自MSDN
关于HorizontalAlignment="Stretch"
:
子元素被拉伸以填充父元素分配的布局空间。显式
Width
和Height
值优先。
Why is my Grid's width NaN?
NaN
是指"未设置"。FrameworkElement
是WPF中许多控件的基类,如果不显式设置Height和Width属性,则类构造函数中的默认值将为NaN
。
When I get WindowContainer.Width during start-up code for the view, it returns NaN
在这种情况下,请尝试获取ActualWidth
,而不是Width
,因为:
ActualWidth
属性是根据其他宽度输入和布局系统计算的值。该值由布局系统本身根据实际呈现过程设置,因此可能会稍微滞后于作为输入更改基础的属性(如宽度)的设置值。
这篇关于为什么我的网格宽度是NaN?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文