如何在数据网格模板中创建一个按钮,以便在单击时删除该项目

Joh*_*per 6 wpf datagrid mvvm

我想为我的datagrid列使用datatemplate,并为每个项目都有一个按钮.如果用户点击按钮,我希望删除该项目.我正在使用MVVM模式.我怎么做到这一点?

<DataGridTemplateColumn>
  <DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
      <Button Width="50" Content="Remove" Command="{Binding RemoveItemCommand}"/>
    </DataTemplate>
  </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

RMa*_*art 4

public class ItemViewModel
{
  public ItemViewModel()
  {
    RemoveCommand = new MyCommand(Remove);
  }

  public event EventHandler ItemRemoved;
  public ICommand RemoveCommand { get; private set; }

  private void Remove()
  {
    // Whatever it takes to remove item from your data store
    service.Remove(this.Data);

    var removeItem = ItemRemoved;
    if (removeItem != null)
      removeItem(this, EventArgs.Empty);
  }
}

public class ListViewModel
{
  public ListViewModel(IEnumerable<ItemViewModel> items)
  {
    ItemVMs=new ObservableCollection<ItemViewModel>(items);
    foreach (var item in ItemVMs)
      item.ItemRemoved += RemoveSelectedItem;
  }

  public ObservableCollection<ItemViewModel> ItemVMs { get; private set; }

  private void RemoveSelectedItem(object sender, EventArgs e)
  {
    var item = sender as ItemViewModel;
    item.ItemRemoved -= RemoveSelectedItem;
    ItemVMs.Remove(item);
  }
}
Run Code Online (Sandbox Code Playgroud)

每个项目的RemoveCommand 将绑定到DataGrid 中其按钮。听起来你已经完成了那部分。将 ListViewModel 的 ItemVMs 属性设置为 DataGrid 的数据源。