命令我有一個叫主窗口的窗口,有一個工具欄和框架。在框架內顯示一個名爲HOMEPAGE的頁面。此頁面顯示菜單選項的樹狀視圖。當用戶點擊一個節點時,使用Border.Content屬性在HOMEPAGE的邊框內顯示相應的表單(頁面)。我在工具欄中有一個按鈕來搜索客戶,我需要將此按鈕的command屬性綁定到在Customers頁面的viewmodel內定義的命令。這個頁面是HOMEPAGE的一個孩子,而這個孩子是MAINWINDOW的孩子。你能否建議一種方法來做到這一點,即訪問在孩子的孩子對象中定義的命令? 謝謝。綁定到一個子窗口的DataContext的
回答
這違背了MVVM的原則。
的ViewModels(和其相應的命令)是1:1至觀。每個ViewModel提供一個View和一個View。它有助於將ViewModel視爲View的代碼隱藏,只是它不能直接訪問View(因此它完全與其分離)。
違反這一原則(V至VM == 1:1),的ViewModels之間或視圖之間產生依賴性,這是一件壞事。由於每個「模塊」都依賴於其他「模塊」的實現,因此它使得應用程序難以維護。
你應該做的是暴露在服務於相關查看視圖模型另一個命令。反過來,這個命令可能觸發你想要的任何事情。
非常感謝您抽出寶貴時間回答。即使你的回答非常清楚,我仍然無法弄清楚如何使SearchCustomer命令綁定到工具按鈕,並將結果放入綁定到頁面中網格的集合中。我發現即使它只是一種形式,datacontext也不能通過Frame訪問:框架充當邊界。把這個應用想象成一個MDI父窗體,帶有一個工具欄,其中的命令作用於MDI子窗體內的對象上 – Leo 2011-05-19 15:09:50
嘗試使用ViewModelLocator搜索。這是一種允許(除其他之外)從任何位置訪問任何ViewModel的模式。 – 2011-05-19 15:25:28
- 1. 將usercontrol的datacontext綁定到主窗口
- 2. 綁定到DataContext的子類
- 3. 綁定到子視圖中的datacontext
- 4. 一個窗口綁定到自己?
- 5. 將窗口綁定到父窗口的子集合
- 6. 綁定到一個DataContext祖先
- 7. 將DataContext綁定到一個矩形
- 8. WPF XAML - 將上下文菜單項綁定到主窗口DataContext
- 9. WPF與窗口的RelativeSource綁定需要路徑中的「DataContext」?
- 10. WPF綁定:綁定到DataContext的父代
- 11. 綁定到主的datacontext,不
- 12. 綁定到單獨的DataContext
- 13. 從子窗口wpf綁定
- 14. WPF綁定到DataContext與類和子類
- 15. 如何將Window或其子的DataContext綁定到Window的一個特定屬性?
- 16. 將一個控件綁定到另一個的DataContext
- 17. Silverlight子窗口中的綁定問題
- 18. 綁定子窗口jQuery的事件
- 19. 子窗口中的命令綁定
- 20. 輸入綁定CommandParameter綁定到窗口
- 21. 綁定一個ListBoxItem的IsSelected屬性到的DataContext的ItemsSource
- 22. 主窗口的DataContext StackOverflowException
- 23. 綁定到窗口標題
- 24. 綁定到另一個控制的DataContext的性質
- 25. Silverlight DataForm,子窗口,組合框,DataContext
- 26. 當子窗口被聚焦(同一wpf窗口)時,我的inputcommand鍵綁定到主窗口不起作用?
- 27. 數據綁定到一個窗口「的財產不工作
- 28. 將表單綁定到另一個進程的窗口
- 29. 從資源綁定到datacontext
- 30. 將DataContext綁定到ValidationRule
這將是非常有益的,如果你能告訴複雜的關係,而無需編寫與所有大寫名稱文本過於冗餘的牆。例如,您可以使用縮進列表作爲層次結構和箭頭進行關係。另外或者你可以給一些示例代碼來說明你的問題。 – 2011-05-18 20:21:17
他很清楚他的問題。 – 2011-05-18 23:37:36