如何通知WPF中的所有subControls
它们应该例如展开?通知WPF中具有特定属性的所有子控件
并非每个SubControl
都应该被告知。接受其他元素放置。
也许你知道另一个posibilty让它们在接受特定的dropContent
时改变它们的颜色。
如何通知WPF中的所有subControls
它们应该例如展开?通知WPF中具有特定属性的所有子控件
并非每个SubControl
都应该被告知。接受其他元素放置。
也许你知道另一个posibilty让它们在接受特定的dropContent
时改变它们的颜色。
选项1
如果你的子控件都在自己的代码来实现,一个好的办法是:
RoutedEvent
您可以向路由事件的EventArgs
添加参数,以通知子控件您所通知的更改的具体细节。
选项2
如果你想影响你没有创建并没有控制权的控制,你可以递归下降用VisualTreeHelper.GetChildrenCount()
和VisualTreeHelper.GetChild()
可视化树,让你想要的任何控制变化你发现。这比RoutedEvent方法更强大,但在很多情况下不能提供良好的抽象,导致代码从长远来看难以维护。
选项3
使用继承的附加属性。在父项上设置属性将导致属性传播到每个后代,每次调用您的PropertyChangedCallback
。在您的PropertyChangedCallback
中,您可以对子控件进行任何更改。
这可能比递归降级视觉树更好,因为如果将新的子控件添加到树中,您也将得到PropertyChangedCallback
。这意味着稍后添加的新孩子(例如通过数据绑定)也将获得更新的功能(例如,如果他们是放下目标,它们也会扩展)。另一个优点是继承的属性和逻辑树一样向下传播。缺点是它们可能比VisualTreeHelper
技术慢,并且代码稍多。
谢谢你的维修人员。我会在接下来的几周内尝试它,并给你反馈。 – elCapitano 2009-11-25 09:23:50