如何获取自适应大小的WPF窗口的尺寸?

3

我有一个根据内容自动调整大小的窗口。为了进行动画,我需要知道它的宽度和高度。 ActualWidth 总是窗口的最大宽度,而 WidthHeight 属性则显示 NaN。

3个回答

2
ActualWidth/ActualHeight会给出窗口的实际大小 - 基于窗口的实际渲染,由布局系统提供。这些应该是您要查找的大小。但是,由于它基于渲染,所以计算可能会有轻微延迟,如果它们不正确,我想它们还没有被计算 - 这时就会发生竞争条件。您可以在上面的链接中阅读更多信息,在那里有一些关于何时计算实际大小的重要说明 - 因此 - 为什么它们可能会延迟。 Width/Height是请求的大小,如果没有明确设置,它们将保持其默认值Double.NaN。

在窗口渲染之前,我需要知道它的大小。动画是淡入淡出和缩放的组合,需要居中显示。 - laci37

2
您可以使用 Window 的 UpdateLayout() 方法来验证 ActualWidth 和 ActualHeight。

让我开心了一整天。非常感谢 :) - Fᴀʀʜᴀɴ Aɴᴀᴍ

0
每当需要动画改变大小时,你应该尽可能使用ScaleTransform而不是直接改变HeightWidth的值。这不仅可以提高性能,还可以避免像这样的问题,因为它不需要设置特定的大小值,而是将比例指定为百分比。

我需要将ScaleTransform居中。我不改变高度和宽度,它们只会被自适应和缩放改变。 - laci37

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接