如何删除绑定到对象的数据网格中的选定项目

时间:2012-02-13 00:06:12

标签: wpf binding datagrid icommand

我有一个命令按钮,定义为:

<r:RibbonButton Command = "{StaticResource cmdRemoveCustomer}" Label="Remove Customer"  
CommandParameter="{Binding}" DataContext="{Binding ElementName=dataGridCustomers,
Path=SelectedItems}"  />

和数据网格

<DataGrid AutoGenerateColumns="False" Height="394" HorizontalAlignment="Left" 
x:Name="dataGridCustomers" VerticalAlignment="Top" Width="803" >
<DataGrid.Columns>

现在我正在尝试删除所选项目

public class RibbonRemoveCustomer : ICommand
{
    public void Execute(object parameter)
    {

        // ??? How to remove selected customers?


    }

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public event EventHandler CanExecuteChanged;
}

我尝试直接从datagrid中删除项目,但是收到错误声明我应该从ItemsSource中删除项目。 datagrid通过代码绑定到observablecollection。

  dataGridTrackCustomers.ItemsSource = Customers;

如何使用RibbonRemoveCustomer命令从Customers对象中删除datagrid中的所有选定客户?

1 个答案:

答案 0 :(得分:2)

如果你像你一样执行命令参数绑定,你应该得到 IList 作为参数。如果您没有DataTables发布一些代码和“对象参数”的类型,则以下代码适用于DataTable ItemsSource。

public void Execute(object parameter)
{

    var toDelete= (IList)parameter;//<-- Datagrid.SelectedItems
    var collection = toDelete.Cast<DataRowView>();
    var list = new List<DataRowView>(collection);

    foreach(var item in list)
    {
       item.Row.Delete();
    }
 }