【问题标题】:LayoutUpdated event has stopped firing. Handlers are in place, any ideas?LayoutUpdated 事件已停止触发。处理程序到位,有什么想法吗?
【发布时间】:2016-08-16 07:02:54
【问题描述】:

我有一个控件,允许用户添加和操作 n 个图形和文本层。图层是添加到父控件画布的每个用户控件。我使用父控件的 LayoutUpdated 事件来刷新转换特定变量和其他内容。没有更改处理程序方法,LayoutUpdate 事件停止触发。我显然做了一些导致它的事情,但我没有修补任何可以在逻辑上与这个新问题相关的东西。任何想法表示赞赏 - 谢谢。 只是为了澄清:我不是在寻求解决方案 - 只是类似经验的轶事 - 这可能比你想象的更有帮助。谢谢

【问题讨论】:

  • 如果没有看到相关代码,我们不知道您可能做了什么。
  • 只是想知道以前是否有人经历过——通常其他人的经验很有价值。

标签: wpf user-interface layout


【解决方案1】:

在这种情况下,原因是在设计时在画布内的 xaml 中定义的 WPF UserControl (kid) 没有设置任何依赖项属性值。画布位于另一个不同类型的用户控件(妈妈)内。在运行时,妈妈被实例化,她的孩子根据妈妈的运行时大小以及表示孩子是否可见的调用参数在妈妈的画布中调整大小、定位和可见。只有当它被请求可见时,才会调整这个孩子的实例的大小和位置,如果不是,它只是隐藏的(不调整大小,不定位)。
在 mom 的画布中存在这个实例化但未调整大小和未定位的元素导致 layoutupdated 事件无法触发。这种情况不仅影响了有问题的实例,还影响了之后在项目运行时创建的所有其他实例。 (注意 - 没有引发异常)

适合这种情况的解决方案是显式地调整此元素的大小并将其放置在画布中 - 即使不需要它也是如此。然后 layoutupdated 事件按预期触发。我很想提供一个更深刻和更普遍的答案,但也许更聪明的人也可以包括他们的洞察力。谢谢

【讨论】:

    猜你喜欢
    • 2019-02-08
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多