Как удалить выбранные элементы в сетке данных, связанной с объектом - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть командная кнопка, определенная как:

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

Я попытался удалить элементы из таблицы данных напрямую, но получил сообщение об ошибке, что я должен удалить элементы из ItemsSource.Сетка данных связана с наблюдаемой коллекцией через код.

  dataGridTrackCustomers.ItemsSource = Customers;

Как удалить всех выбранных клиентов в сетке данных из объекта Customers с помощью команды RibbonRemoveCustomer?

1 Ответ

2 голосов
/ 13 февраля 2012

если вы выполняете привязку параметра команды, как вы, вы должны получить IList в качестве параметра. следующий код предназначен для DataTable ItemsSource, если у вас нет DataTables, публикуют некоторый код и тип «параметра объекта».

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