2012-02-13 68 views
0

DataGrid中删除选定的项目我有一个命令按钮定义为:如何绑定到一个对象

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

而且一个DataGrid

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

我试着直接从数据网格中删除项目,但得到一个错误,指出我应该从ItemsSou中删除项目RCE。 datagrid通过代码绑定到observablecollection。

dataGridTrackCustomers.ItemsSource = Customers; 

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

回答

2

如果你像你那样做你的命令参数绑定,你应该得到一个IList作为参数。如果您没有DataTable发布一些代码和“对象参数”的类型,则以下代码适用于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(); 
    } 
} 
相关问题