为什么我的网格宽度是NaN? [英] Why is my Grid's width NaN?

查看:19
本文介绍了为什么我的网格宽度是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"

子元素被拉伸以填充父元素分配的布局空间。显式WidthHeight值优先。


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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆