我有一個相關的問題here其中我有一個用戶控件與命令綁定。用戶控件已從視覺樹中刪除,但canExecute仍在觸發。我對指揮模式的理解是,它像路由事件一樣冒泡和隧道。那麼,一旦連接了命令綁定的元素不再在可視化樹中,CanExecute如何觸發?一旦將元素從可視樹中刪除後,commandBinding的CanExecute如何激發?
3
A
回答
1
我的猜測是有一個commandmanager註冊的命令實例。命令可以從許多不同的來源執行,而不僅僅是用戶界面,例如快捷鍵。
嘗試調用CommandManager.InvalidateRequerySuggested();並在canexecute方法中添加一個斷點以確認情況如此。
希望這會有所幫助。
1
IMO,CommandBindings在WPF中實現得很差。如果它有一個CommandBinding,即使在控件關閉的情況下,你也必須解決這個事實,即系統保留一個WeakReference給你的控件。
您將在網上看到很多關於如何在XAML代碼中設置CommandBinding的示例。問題是所有這些例子都會將性能問題引入到任何粘貼的應用程序中。 CommandBindings從不自行消失。至少,不是很長時間。
的解決方案是:
A)不要在XAML設立化CommandBindings。你必須使用後面的代碼。在調用InitializeComponent()之後,建議使用構造函數。使用this.CommandBindings.Add()將代碼添加到CommandBindings中。 B)處理Window或Control的Closed()事件並調用this.CommandBindings.Clear()。
這是我一直能夠可靠地獲得CommandBindings退出射擊的唯一途徑。我認爲這是微軟實施該功能的一種荒謬的方式。事實上,很多在線示例教你在XAML中聲明CommandBindings只會加劇問題。
相關問題
- 1. 從元素中刪除元素而不刪除元素後
- 2. 從堆樹中刪除根元素
- 3. Flex:刪除可視元素
- 4. 一旦從元素中刪除類,IE6不會更新樣式
- 5. 從列表視圖中刪除最後一個元素
- 6. 如何從DOM中刪除子元素時刪除父元素?
- 7. 如何從選定的樹視圖中刪除/刪除行
- 8. 如何從切片中刪除最後一個元素?
- 9. 如何使用PHP從URL中刪除最後一個元素?
- 10. 如何刪除角元素的最後一個子元素
- 11. 獲取後從ArrayList中刪除元素
- 12. 刪除後可排序的元素()
- 13. 如何從列表中刪除元素
- 14. 如何從jlist中刪除元素?
- 15. 如何從b-tree中刪除元素?
- 16. 如何從結構中刪除元素
- 17. 如何從hsearch中刪除元素
- 18. 如何從矢量中刪除元素?
- 19. 如何從對象中刪除元素?
- 20. 如何從數組中刪除元素?
- 21. 如何從數組中刪除元素?
- 22. 如何從Vector中刪除元素?
- 23. 如何從地圖中刪除元素
- 24. 如何刪除C中二叉樹中的元素?
- 25. 的java:刪除元素從後陣.split()
- 26. Redux:當從數組中刪除特定元素時,它將刪除最後一個元素
- 27. 從angularjs中刪除列表中的最後一個元素
- 28. JavaScript可視化元素選擇,刪除
- 29. 如何刪除java.util.Set中的最後一個元素?
- 30. 如何從數組中刪除相同元素的元素
這意味着您不應該在用戶控件上聲明一個命令綁定(因爲您沒有關閉的事件),這可能會導致內存問題。 – 2010-07-13 23:17:59