我有一个控件,允许用户添加和操作n个图形和文本图层。图层是添加到父控件画布的每个用户控件。我使用父控件的LayoutUpdated事件刷新转换特定变量和其他东西。如果不更改处理程序方法,则LayoutUpdate事件将停止触发。我显然已经做了一些导致它的事情,但我还没有修补任何逻辑上可以解决这个新问题的事情。任何想法都表示赞赏 - 谢谢。 只是为了澄清:我不是要求解决方案 - 只是一个类似的经验轶事 - 这可能比你想象的更有帮助。感谢
答案 0 :(得分:0)
在这种情况下,原因是在设计时在画布内的xaml中定义的WPF UserControl(kid),没有设置任何依赖项属性值。画布位于另一个不同类型的用户控件(妈妈)中。在运行时,妈妈被实例化,并且她的孩子根据妈妈的运行时大小以及表示孩子是否可见的调用参数在妈妈的画布中被调整大小,定位和显示。如果请求可见,则仅对这个孩子的实例进行调整大小和定位,如果没有,则仅隐藏(不是大小,未定位)。
在妈妈的画布中存在这个实例化但未实现且未定位的元素导致布局更新事件失败。这种情况不仅影响了所讨论的实例,而且影响了之后在项目中运行时创建的所有其他实例。 (注意 - 没有例外)
适用于这种情况的解决方案是明确地将此元素放大并放置在画布中 - 即使不需要它。然后,layoutupdated事件按预期触发。我希望提供更深刻和更广泛的答案,但也许更聪明的人也可以包括他们的见解。感谢