C# 如何从列表中删除?面向MVVM模式

C# 如何从列表中删除?面向MVVM模式,c#,wpf,mvvm,C#,Wpf,Mvvm,我有一个listview,它的itemsSource属性绑定到一个ObservableCollection,放在视图模型上。和视图上的按钮 如何使按钮从observableCollection中删除listview上选定的项目?将第二个属性绑定到列表视图选定的项目,将第三个属性绑定到视图模型上的命令,该命令仅从项目列表中删除选定的项目 请参见将第二个属性绑定到列表视图中的选定项,将第三个属性绑定到视图模型上的命令,该命令仅从项目列表中删除选定项 请参见有很多方法可以做到这一点。一种方法是使用参数

我有一个listview,它的itemsSource属性绑定到一个ObservableCollection,放在视图模型上。和视图上的按钮
如何使按钮从observableCollection中删除listview上选定的项目?

将第二个属性绑定到列表视图选定的项目,将第三个属性绑定到视图模型上的命令,该命令仅从项目列表中删除选定的项目


请参见

将第二个属性绑定到列表视图中的选定项,将第三个属性绑定到视图模型上的命令,该命令仅从项目列表中删除选定项


请参见

有很多方法可以做到这一点。一种方法是使用参数创建
RelayCommand
DelegateCommand

<Button Command="{Binding MyDeleteCommand}" 
        CommandParameter="{Binding ElementName=mylistview, Path=SelectedItem}"/>


您可以按照AlSki发布的方式,将
SelectedItem
绑定到
ViewModel
并在
ViewModel
中处理不带参数的命令。一种方法是使用参数创建
RelayCommand
DelegateCommand

<Button Command="{Binding MyDeleteCommand}" 
        CommandParameter="{Binding ElementName=mylistview, Path=SelectedItem}"/>


您可以按照AlSki发布的方式,将
SelectedItem
绑定到
ViewModel
并在
ViewModel
中处理不带参数的命令,只需添加另一种方法即可:

<ListView ItemsSource="{Binding MyList}"             
          SelectedItem="{Binding SelectedItem}"/>

<Button Command="{Binding DeleteCommand}"/>

有关RelayCommand的更多信息,只需添加另一种方法即可:

<ListView ItemsSource="{Binding MyList}"             
          SelectedItem="{Binding SelectedItem}"/>

<Button Command="{Binding DeleteCommand}"/>

有关
RelayCommand

的更多信息,您可以使用命令功能。检查您可以使用命令功能的答案。如果列表中包含重复项,并且用户选择删除除第一个重复项以外的其他项,则检查是否存在错误的答案。例如,如果用户选择列表中的最后一项
{2,3,4,5,2}
,则该命令将删除第一项。删除的含义应在您的业务案例中定义,并在方法
delete
中实现。此外,在80%的情况下,删除第一次可能是您想要的。如果列表包含重复项,并且用户选择删除第一次重复项以外的项,则会出现错误。例如,如果用户选择列表中的最后一项
{2,3,4,5,2}
,则该命令将删除第一项。删除的含义应在您的业务案例中定义,并在方法
delete
中实现。此外,在80%的情况下,删除第一个事件可能是您想要的。