0

我有一个带有删除按钮的数据网格 XAML 看起来像:

<sdk:DataGridTemplateColumn Header="Del/Tgl" >
    <sdk:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Content="Delete" 
           Command="{Binding DeleteRowCommand}"
                    CommandParameter="{Binding Column}"
                    />
        </DataTemplate>
    </sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>

我通过复制 John Papa 的代码将 ICommand 实现为 DelegateCommand。我向我的 ViewModel 添加了一个公共属性:

public ICommand DeleteRowCommand {get;set;}

在我的 viewModel 的构造函数中,我设置了命令:

this.DeleteRowCommand = new DelegateCommand(onDelete, CanDelete);

最后定义了onDelete, 和CanDelete:

private void onDelete(object param)
{
    // Get the Column Name
    string strColumnName = param as string ?? string.Empty;
}

private bool CanDelete(object param)
{
    // If we ae here we can delete the row
    return true;
}

一切都在我的 Silvelight 网格上运行,但单击删除按钮,我从不去onDelete运行。我究竟做错了什么?

4

1 回答 1

1

基本上,命令绑定将在 Object 中查找 DeleteRowCommand 属性(我的意思是作为 ItemSource 绑定到数据网格的对象列表)。因此,如果您使用的是 SL5,则需要设置绑定源或使用 relativesource。

干杯! 维诺德

于 2012-08-09T03:50:31.973 回答