【问题标题】:Determine size of SizeToContent WPF Window before its rendered在呈现之前确定 SizeToContent WPF 窗口的大小
【发布时间】:2011-01-09 19:04:59
【问题描述】:

我的 WPF 应用程序中有一个窗口有时会显示。当它显示时,它会以动画形式淡入,当它关闭时,它会淡出。没什么特别的,只是一个修改不透明度的故事板。实际上,窗口从未真正关闭,不透明度只是淡出到 0,直到它再次显示为止。

此窗口是一个信息窗口,并不总是显示相同的内容。它的大小适合内容(宽度和高度)并且在这方面效果很好。用户选择要显示的屏幕的基本区域(TopLeft、TopRight、Center、BottomLeft、BottomRight)。

在窗口淡出之前更新内容。因为窗口的大小是根据内容调整的,所以它的大小会增加或减小。宽度和高度可以改变。

在定位窗口时,假设在右下角,我只需取屏幕的工作区域(宽度和高度),然后减去窗口的宽度/高度以获得我需要的顶部和左侧位置.

逻辑有效,但我遇到的问题是窗口的高度和宽度没有返回内容更新后的大小,而是返回上次显示时的大小。我假设这是因为它尚未使用新内容呈现。

这让我很伤心,因为如果窗口比上一次明显超出屏幕时更大。

我尝试将窗口定位在 OnContentRendered 事件中,但这只会在创建窗口时触发一次,而不是在内容更新后、不透明度设置为 0 时触发。

有没有人知道如何在窗口淡入之前获得准确的宽度和高度?

任何帮助将不胜感激!

【问题讨论】:

    标签: c# wpf sizetocontent


    【解决方案1】:

    我找到了自己问题的答案。更新内容后,对窗口的 UpdateLayout() 方法的简单调用会强制更新。调用宽度和高度然后返回准确的值。

    【讨论】:

    • UpdateLayout() 并不总是有效。我的意思是你不能总是在 UpadteLayout() 调用后立即获得 ActualHeight 或 ActualWidth
    • 如果您解决了自己的问题,您可以将您的答案标记为解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 2011-07-14
    相关资源
    最近更新 更多