WPF 事件来捕获新添加的控件?

Posted

技术标签:

【中文标题】WPF 事件来捕获新添加的控件?【英文标题】:WPF Event to capture newly added controls? 【发布时间】:2011-06-28 21:25:45 【问题描述】:

我们在 WPF 中使用 ContentControl 和其他容器。我需要将带有新子控件的通知添加到容器中。在父级中获取新创建的控件的最佳方法是什么?

【问题讨论】:

【参考方案1】:

ContentControl 仅包含一个通过 ContentControl.Content 属性附加的子项。您可以挂钩 ContentControl.OnContentChanged 以发现此属性的值何时更新。

【讨论】:

【参考方案2】:

最简洁的方法是从这些控件派生并覆盖报告您感兴趣的更改的方法。例如从ContentControl 派生并实现OnContentChanged。这种方法可能对您没有吸引力。

如果您想检测子控件或子控件的更改而不从它们派生,您可以观察到此类更改会影响布局,因此您可以挂钩LayoutUpdated 事件。这种方法的问题在于,您需要通过检查ChildChildren 来查找更改来跟踪以前自己添加的孩子。您还必须小心不要挂在对以前孩子的引用,以免造成内存泄漏。但可以做到。

【讨论】:

以上是关于WPF 事件来捕获新添加的控件?的主要内容,如果未能解决你的问题,请参考以下文章

JQuery 动态添加控件ID,无法触发点击事件

WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件

请教关于WPF上自定义控件添加事件的问题

wpf怎么 动态 为控件添加事件? 我 窗口上有许多个label控件,我只是想改变它们的背景色,怎样批量添加?

阻止WPF控件在MouseMove事件上重叠

WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件