2014-03-05 61 views
0

我有自定義面板的項目控件。基於這個itemsControl我正在寫行爲(行爲) 我需要的是每當我的ItemsPanel被安排覆蓋被稱爲我的行爲應該得到通知。在我的行爲中,我有權訪問itemsControl和itemsPanel。在ArrangeOverride上發出通知

一種方法是我可以從ItemsPanel覆蓋引發一個事件,並在我的行爲中訂閱它。

但是,如果你有更好的解決方案,請你可以建議嗎?

回答

-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」

[編輯]我誤解你的問題,我想,這是你建議:) 我沒有看到任何其他的方式。

+0

感謝您看Olivier,但這不是我所期待的。 – SD13