2011-05-18 15 views
0

命令我有一個叫主窗口的窗口,有一個工具欄和框架。在框架內顯示一個名爲HOMEPAGE的頁面。此頁面顯示菜單選項的樹狀視圖。當用戶點擊一個節點時,使用Border.Content屬性在HOMEPAGE的邊框內顯示相應的表單(頁面)。我在工具欄中有一個按鈕來搜索客戶,我需要將此按鈕的command屬性綁定到在Customers頁面的viewmodel內定義的命令。這個頁面是HOMEPAGE的一個孩子,而這個孩子是MAINWINDOW的孩子。你能否建議一種方法來做到這一點,即訪問在孩子的孩子對象中定義的命令? 謝謝。綁定到一個子窗口的DataContext的

+0

這將是非常有益的,如果你能告訴複雜的關係,而無需編寫與所有大寫名稱文本過於冗餘的牆。例如,您可以使用縮進列表作爲層次結構和箭頭進行關係。另外或者你可以給一些示例代碼來說明你的問題。 – 2011-05-18 20:21:17

+0

他很清楚他的問題。 – 2011-05-18 23:37:36

回答

0

這違背了MVVM的原則。

的ViewModels(和其相應的命令)是1:1至觀。每個ViewModel提供一個View和一個View。它有助於將ViewModel視爲View的代碼隱藏,只是它不能直接訪問View(因此它完全與其分離)。

違反這一原則(V至VM == 1:1),的ViewModels之間或視圖之間產生依賴性,這是一件壞事。由於每個「模塊」都依賴於其他「模塊」的實現,因此它使得應用程序難以維護。

你應該做的是暴露在服務於相關查看視圖模型另一個命令。反過來,這個命令可能觸發你想要的任何事情。

+0

非常感謝您抽出寶貴時間回答。即使你的回答非常清楚,我仍然無法弄清楚如何使SearchCustomer命令綁定到工具按鈕,並將結果放入綁定到頁面中網格的集合中。我發現即使它只是一種形式,datacontext也不能通過Frame訪問:框架充當邊界。把這個應用想象成一個MDI父窗體,帶有一個工具欄,其中的命令作用於MDI子窗體內的對象上 – Leo 2011-05-19 15:09:50

+0

嘗試使用ViewModelLocator搜索。這是一種允許(除其他之外)從任何位置訪問任何ViewModel的模式。 – 2011-05-19 15:25:28

相關問題