在ArrangeOverride上通知

时间:2014-03-05 16:40:10

标签: c# .net wpf itemscontrol

我有自定义面板的项目控件。基于这个itemsControl我正在写一个行为(行为) 我需要的是每当调用我的ItemsPanel的编辑覆盖时,我的行为都会得到通知。在我的行为中,我可以访问itemsControl和itemsPanel。

一种方法是我可以从ItemsPanel覆盖中引发一个事件,并在我的行为中订阅它。

但如果你有更好的解决方案,请问你能建议吗?

1 个答案:

答案 0 :(得分:-1)

以下是我尝试这样做的方法:

  1. 创建“假”控件

    class ArrangeNotifier : Control
    {
        public event EventHandler OnArrange;
        protected override ArrangeOverride(blabla)
        {
            (OnArrange??delegate{})(blabla);
        }
    }
    
  2. 在您的行为的“OnAttached”上,创建一个var myNotifier = new ArrangeNotifier(),您将添加到面板AttachedObject(这将使您的行为成为Behavior<Panel>

  3. 从您的行为中取代myNotifier.OnArrange,并在处理程序中执行您的操作

  4. 不要忘记在行为的“OnDettached”中删除虚假控件

  5. [编辑] 我误解了你的问题,我猜这就是你的建议:) 我没有看到任何其他方式。