我目前有一个视图有3个相当简单的视图模型。为了便于讨论,我们将重点关注三种视图模型中的两种。
View是用户管理用户控件。它包含一个DataGrid,其ItemsSource绑定设置为UserListViewModel。此视图模型仅显示数据网格中的用户信息。
用户管理视图还包含一些其他控件,例如用于添加新用户和删除用户的按钮。这些按钮当前绑定到名为UserManagementViewModel的第二个视图模型。例如,“删除”按钮将成功调用UserManagementViewModel上的RemoveUser方法。
我的问题是,通过XAML(因为我讨厌代码隐藏),如何将DataGrid的SelectedItem属性(绑定到UserListViewModel)传递到UserManagementViewModel上的RemoveUser方法调用?我意识到,在MVVM设计模式中,我的视图模型无法查看视图以检索必要的信息,因此必须有一种方法通过绑定将该信息传递给方法。
可以理解执行类似功能的XAML代码示例(或显示如何的链接)。谢谢你的帮助!
答案 0 :(得分:0)
我相信你所寻求的是命令目标绑定到数据网格的选择项,在那里可以从数据网格路由这些信息;说按下按钮时。
请参阅MSDN上的Commanding Overview
答案 1 :(得分:0)
您只需使用命令参数
即可 <Button Command="{Binding RemoveCommand} CommandParameter="{Binding Elementname=gridUser, Path=SelectedItem}" />
或您的UserManagementViewModel可以访问UserListViewModel然后您需要一个没有命令参数的命令,只需使用您的UserListViewModel实例的SelectedUser属性
public void ExecuteRemove()
{
var userToRemove = this._myUserListViewModelinstance.SelectedUser;
...
}