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

时间:2012-11-04 09:34:44

标签: c# wpf mvvm

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

3 个答案:

答案 0 :(得分:5)

只是添加另一种方法:

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

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

在您的ViewModel中,您有一个名为SelectedItem的属性,每次更改ListView中的选择时都会更新该属性。

现在您可以轻松处理ViewModel中的删除:

internal class ViewModel
{
    public ViewModel()
    {
        this.DeleteCommand = new RelayCommand(() => this.Delete());
    }
    public void Delete()
    {
        this.MyList.Remove(this.SelectedItem);
    }
} 

转到HERE了解有关RelayCommand

的更多信息

答案 1 :(得分:3)

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

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

您可以按照AlSki的方式发布并将SelectedItem绑定到您的ViewModel并处理ViewModel

中没有参数的命令

答案 2 :(得分:1)

将第二个属性绑定到列表视图选定项,将第三个属性绑定到视图模型上的Command,它只是从项列表中删除所选项。

请参阅http://msdn.microsoft.com/en-us/magazine/dd419663.aspx