1

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

4

3 回答 3

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);
    }
} 

这里了解更多信息RelayCommand

于 2012-11-05T07:59:32.307 回答
3

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

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

您可以按照 AlSki 发布的方式将其绑定SelectedItem到您的ViewModel并处理您的不带参数的命令ViewModel

于 2012-11-05T07:44:12.310 回答
1

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

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

于 2012-11-04T09:40:35.633 回答