当我使用 ObservableCollections 等时,我使用了一种工作方法,有点基于 Aghilas Yakoub 的回答。
我向 DataGrid 添加了一个 Remove-Button,其可见性绑定到一个IsNew
-Property。
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Remove" Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabControl}}, Path=DataContext.BottomDetailVM.DeleteCommand}" Visibility="{Binding IsNew, Converter={StaticResource Bool2VisibilityConverter}, FallbackValue=Collapsed}" CommandParameter="{Binding}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
当用户单击按钮时,以当前对象(显示在行中)作为参数执行命令。
public ICommand DeleteRangfolgeCommand
{
get
{
return new ActionCommand<MyOwnViewModel>(ExecuteDelete);
}
}
private void ExecuteDelete(MyOwnViewModel viewModelToDelete)
{
this.ItemsSourceList.Remove(viewModelToDelete);
}
顺便说一句:我正在使用MSDN-MagazineRelayCommand
中的-implementation(在我的例子中称为 ActionCommand)。