我有一个命令按钮,定义为:
<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中的所有选定客户?
答案 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();
}
}