2013-06-28 40 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上

相关问题