Wpf 如何在按钮中传递特定的viewmodel对象';什么是命令参数?

Wpf 如何在按钮中传递特定的viewmodel对象';什么是命令参数?,wpf,data-binding,mvvm,button,routed-commands,Wpf,Data Binding,Mvvm,Button,Routed Commands,我有一个使用Master Detail UI模式的简单WPF程序,其中详细信息在主窗格中显示当前选定的集合项。我使用的是MVVM,每个XAML页面都有一个ViewModel对象作为其DataContext 现在,我想在主窗格中添加一个删除按钮,以便从项目主列表中删除。但是,我不知道如何将当前选定项的viewmodel对象作为button CommandParameter传递给路由命令处理程序代码 提前感谢您的指点 Mike一个选项是,创建每个命令时引用视图模型,并在视图模型上创建一个绑定到当前选

我有一个使用Master Detail UI模式的简单WPF程序,其中详细信息在主窗格中显示当前选定的集合项。我使用的是MVVM,每个XAML页面都有一个ViewModel对象作为其DataContext

现在,我想在主窗格中添加一个删除按钮,以便从项目主列表中删除。但是,我不知道如何将当前选定项的viewmodel对象作为button CommandParameter传递给路由命令处理程序代码

提前感谢您的指点


Mike

一个选项是,创建每个命令时引用视图模型,并在视图模型上创建一个绑定到当前选定项的属性。这样,您就不需要将所选项目作为参数传递-命令可以从VM中检索它。如果这不适合您的情况,您可以通过如下方式传递所选项目:

<Button Content="Delete"
                Command="{Binding DeleteCommand}"
                CommandParameter="{Binding ElementName=listBox_, Path=SelectedValue}" />

其中listBox_uu是从选择器派生的控件

希望有帮助


Paul

与Paul展示的相似之处在于,视图模型将知道当前选择了哪个项目。即

public class MyVM
{
 public ObservableCollection<MyObject> MyCollection { get; set; }
 public MyObject CurrentItem { get; set; }
}
只要您的主窗格在选择CurrentItem属性时设置它,您的命令就可以简单地将CurrentItem设置为命令参数

CommandParameter="{Binding Path=CurrentItem}"