Я хочу удалить строку в элементе управления ListView, используя Command и CommandParameter, как показано ниже.
<GridViewColumn Header="X">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding CriteriaId}"/>
<Button Name="btnDeleteCriterion" Tag="{Binding CriteriaId}" Content="{Binding CriteriaId}" Foreground="Red" FontWeight="Bold"
Command="{Binding DeleteCriterionCommand}"
DataContext="{Binding DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType=ListView}}"
CommandParameter="{Binding RelativeSource={RelativeSource self}, Path=Tag}"
/>
<StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
Я пытаюсь захватить свойство Tag кнопки и передать его в команду, как описано выше, а затем удалить его из списка, как показано ниже.
Отредактировано выше XAML и добавлено TextBlock, который использует ту же привязку, что и Tag и Content для Button, но каким-то образом Button не получает значение, а TextBlock делает!?
public void DeleteCriterion(object criterionId)
{
int crtId = (int)criterionId;
Criterion crt = _criteria.FirstOrDefault((c) => c.CriterionId == crtId);
if (crt != null)
_criteria.Remove(crt);
}
но я всегда получаю параметр criterionId как ноль.
Что я делаю не так?