2013-06-28 38 views
0

我現在有一種觀點認爲3個相當簡單的視圖模型。爲了討論,我們將重點關注三種視圖模型中的兩種。如何綁定到數據的視圖模型的方法從視圖

的視圖是一個用戶管理的用戶控制。它包含一個將其ItemsSource綁定設置爲UserListViewModel的DataGrid。該視圖模型只是在數據網格中顯示用戶信息。

用戶管理視圖還包含了一些其他控件,如添加新用戶和刪除用戶的按鈕。這些按鈕目前綁定到名爲UserManagementViewModel的第二個視圖模型。例如,Remove按鈕將成功調用UserManagementViewModel上的RemoveUser方法。我的問題是,通過XAML(因爲我討厭代碼隱藏),我怎樣才能將DataGrid的SelectedItem屬性(綁定到UserListViewModel)傳遞到UserManagementViewModel上的RemoveUser方法調用?我意識到,在MVVM設計模式中,我的視圖模型無法查看視圖來檢索必要的信息,因此必須通過綁定將方法傳遞給該方法。 (顯示如何或鏈接)來執行類似的功能

XAML代碼的例子,將不勝感激。謝謝你的幫助!

回答

0

,你可以簡單地使用commandparameter

<Button Command="{Binding RemoveCommand} CommandParameter="{Binding Elementname=gridUser, Path=SelectedItem}" /> 

或您UserManagementViewModel有機會獲得UserListViewModel那麼你需要一個命令沒有commandparameter和簡單地使用你的UserListViewModel實例的SelectedUser財產

public void ExecuteRemove() 
{ 
    var userToRemove = this._myUserListViewModelinstance.SelectedUser; 
    ... 
} 
+0

使兩個視圖模型彼此「知道」會打破MVVM,模式,你GH。我認爲使用命令參數正是我正在尋找的。謝謝! – Jason

+1

@Jason兩個相互瞭解的視圖模型不會*打破MVVM本身。 MVVM的想法是視圖模型不知道它們將如何呈現。但他們仍然知道*會是什麼。 – Crono

0

我相信你追求的是與綁定到DataGrid的selectedItem屬性命令指揮的目標是什麼,其中從DataGrid一個可以路由等信息;說當一個按鈕被按下時。

Commanding Overview MSDN上

相關問題