контекстное меню для удаления элементов в списке

У меня есть ListView, который отображает список строковых значений. Я хочу добавить запись в контекстное меню для каждого элемента в списке, чтобы удалить выбранный элемент. Мой XAML выглядит так:

<ListView x:Name="itemsListView" ItemsSource="{Binding MyItems}">
  <ListView.ContextMenu>
    <ContextMenu>
      <MenuItem Header="Remove"
                Command="{Binding RemoveItem}"
                CommandParameter="{Binding ElementName=itemsListView, Path=SelectedItem}" />
    </ContextMenu>
  </ListView.ContextMenu>
</ListView>

Проблема в том, что значение CommandParameterвсегда равно нулю. Я добавил дополнительную кнопку для удаления выбранного элемента, чтобы проверить, работает ли моя команда. Кнопка имеет точно такую ​​же привязку и удаление элементов через кнопку работает. Кнопка выглядит так:

<Button Content="Remove selected item"
        Command="{Binding RemoveItem}"
        CommandParameter="{Binding ElementName=itemsListView, Path=SelectedItem}"/>

Команда выглядит так:

private ICommand _removeItem;

public ICommand RemoveItem
{
  get { return _removeItem ?? (_removeItem = new RelayCommand(p => RemoveItemCommand((string)p))); }
}

private void RemoveItemCommand(string item)
{
  if(!string.IsNullOrEmpty(item))
    MyItems.Remove(item);  

}

Любые идеи, почему выбранный элемент имеет значение null при открытии контекстного меню? Может быть, проблема с фокусом списка?

12
задан M.E. 18 June 2012 в 11:48
поделиться