gpt4 book ai didi

wpf - 在这种情况下,为什么 ActualWidth 和 ActualHeight 为 0.0?

转载 作者:行者123 更新时间:2023-12-03 06:42:12 25 4
gpt4 key购买 nike

我在 Canvas 中有一个 Grid ,定义如下:

<Canvas x:Name="outerCanvas">
<Grid Grid.Row="1" Name="cGrid" ShowGridLines="True" Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}" Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Rectangle Name="rectangle1" Stroke="Black" Fill="AntiqueWhite" />
<Rectangle Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle2" Stroke="Black" Fill="AliceBlue" />
<Rectangle Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle3" Stroke="Black" Fill="Aqua" />
<Rectangle Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Grid.RowSpan="1" Name="rectangle4" Stroke="Black" Fill="DarkViolet" />
</Grid>
</Canvas>

我的问题是,在 Window 构造函数上,在 InitializeComponents() 之后,Grid.ColumnDefinitions[0].ActualWidth 或“任何矩形”。ActualWidth 均设置为 0.0(高度相同)。我不知道该怎么做才能获取这些信息。有什么帮助吗?

观察结果:

  1. 我没有定义外部 Canvas 的宽度和高度,但如果我这样做,也不能解决我的问题。
  2. 在运行时,我可以看到这个 Canvas/Grid 占据了整个窗口空间,因此其中的每个矩形都有 ActualWidthActualHeight s
  3. 网格的宽度/高度已绑定(bind)到 Canvas ,但我尝试删除此绑定(bind),但问题仍然存在。

最佳答案

ActualHeightActualWidth在测量和布置控件之前不会设置。通常 InitializeComponent() 中没有任何内容。这会导致测量,因此当它返回时,这些值仍然为零。

您可以通过简单地调用窗口的 Measure() 来强制提前计算这些值。和Arrange()在窗口 InitializeComponent() 之后手动调用方法返回。

如果您要根据内容调整大小:

window.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
window.Arrange(new Rect(0, 0, window.DesiredSize.Width, window.DesiredSize.Height));

如果您使用明确的窗口大小:

window.Measure(new Size(Width, Height));
window.Arrange(new Rect(0, 0, window.DesiredSize.Width, window.DesiredSize.Height));

关于wpf - 在这种情况下,为什么 ActualWidth 和 ActualHeight 为 0.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com