2012-02-13 4 views
0

에 바인딩 된 데이터 그리드에서 선택한 항목을 삭제하는 방법은 명령 단추는 다음과 같이 정의 :가 개체

<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에서 항목을 직접 제거하려고했지만 ItemsSou에서 항목을 제거해야한다는 오류가 표시됩니다. rce. DataGrid는 코드를 통해 observablecollection에 바인딩됩니다.

dataGridTrackCustomers.ItemsSource = Customers; 

어떻게이 RibbonRemoveCustomer 명령을 사용하여 오브젝트 고객의 데이터 그리드에서 선택한 모든 고객을 삭제할 수 있습니까?

답변

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