我有自定义面板的项目控件。基于这个itemsControl我正在写一个行为(行为) 我需要的是每当调用我的ItemsPanel的编辑覆盖时,我的行为都会得到通知。在我的行为中,我可以访问itemsControl和itemsPanel。
一种方法是我可以从ItemsPanel覆盖中引发一个事件,并在我的行为中订阅它。
但如果你有更好的解决方案,请问你能建议吗?
答案 0 :(得分:-1)
以下是我尝试这样做的方法:
创建“假”控件
class ArrangeNotifier : Control
{
public event EventHandler OnArrange;
protected override ArrangeOverride(blabla)
{
(OnArrange??delegate{})(blabla);
}
}
在您的行为的“OnAttached”上,创建一个var myNotifier = new ArrangeNotifier()
,您将添加到面板AttachedObject(这将使您的行为成为Behavior<Panel>
)
从您的行为中取代myNotifier.OnArrange,并在处理程序中执行您的操作
不要忘记在行为的“OnDettached”中删除虚假控件
[编辑] 我误解了你的问题,我猜这就是你的建议:) 我没有看到任何其他方式。