0

我目前有一个带有 3 个相当简单的视图模型的视图。为了便于讨论,我们将重点关注三个视图模型中的两个。

视图是用户管理用户控件。它包含一个 DataGrid,它的 ItemsSource 绑定设置为 UserListViewModel。此视图模型仅在数据网格中显示用户信息。

用户管理视图还包含一些其他控件,例如用于添加新用户和删除用户的按钮。这些按钮当前绑定到称为 UserManagementViewModel 的第二个视图模型。例如,Remove 按钮将成功调用 UserManagementViewModel 上的 RemoveUser 方法。

我的问题是,通过 XAML(因为我讨厌代码隐藏),如何将 DataGrid 的 SelectedItem 属性(绑定到 UserListViewModel)传递到 UserManagementViewModel 上的 RemoveUser 方法调用中?我意识到,在 MVVM 设计模式中,我的视图模型无法查看视图以检索必要的信息,因此必须有一种方法通过绑定将这些信息传递给方法。

执行类似功能的 XAML 代码示例(或显示如何的链接)将不胜感激。谢谢你的帮助!

4

2 回答 2

0

我相信您所寻求的是使用绑定到数据网格的选定项的命令目标进行命令,其中可以从数据网格路由此类信息;说当按下按钮时。

请参阅MSDN 上的命令概述

于 2013-06-28T02:06:46.493 回答
0

您可以简单地使用命令参数

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

或者您的 UserManagementViewModel 可以访问 UserListViewModel 那么您需要一个没有命令参数的命令,只需使用您的 UserListViewModel 实例的 SelectedUser 属性

 public void ExecuteRemove()
 {
    var userToRemove = this._myUserListViewModelinstance.SelectedUser;
    ...
 }
于 2013-06-28T09:25:22.707 回答