【发布时间】:2011-10-21 01:06:34
【问题描述】:
我想使用 Command 和 CommandParameter 删除 ListView 控件中的一行,如下所示。
<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>
我正在尝试获取 Button 的 Tag 属性并将其传递给上面的命令,而不是像这样从列表中删除它。
在 XAML 之上编辑并添加了一个 TextBlock,它使用与 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);
}
但我总是将criteriaId 参数设为空。
我做错了什么?
【问题讨论】:
标签: wpf listview command commandparameter