gpt4 book ai didi

c# - 确保 WPF 中的 ActualWidth 不等于 0

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:54 32 4
gpt4 key购买 nike

所以我读过 ActualWidth可能等于 0,直到它完全加载。我像这样添加了它的事件处理程序,以确保它已完全加载:

text.AddHandler(TextBlock.LoadedEvent, new RoutedEventHandler(textBlock_Loaded));

textBlock_Loaded事件,我有:
TextBlock tb = sender as TextBlock;
textBlockWidth = tb.ActualWidth;

我需要使用变量 textBlockWidth在我的 main 方法中,但每次我将 textBlockWidth 的值写入 Main 方法中的输出时,我得到 0。

所以这个问题是 ,如何确保 ActualWidth在执行我的操作之前不是 0?由于 WPF 是事件驱动的,有没有一种方法可以在完成时触发某个方法,而不是之前?否则,它将返回 0。

最佳答案

为什么要存储实际宽度?为什么不存储对控件的引用并在您真正需要时获取实际宽度?

话虽如此,我不明白为什么您的代码会失败,因为使用加载的事件应该足够好。根据Object Lifetime Events MSDN 页面:

The Loaded event is raised before the final rendering, but after the layout system has calculated all necessary values for rendering.



所以所有控件都应该设置它们的最终位置和大小值。还:

the Loaded event is raised as a coordinated effort throughout the entire element tree (specifically, the logical tree). When all elements in the tree are in a state where they are considered loaded, the Loaded event is first raised on the root element. The Loaded event is then raised successively on each child element.

关于c# - 确保 WPF 中的 ActualWidth 不等于 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3543497/

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