为什么我的Silverlight Datagrid删除按钮没有触发事件?

时间:2012-08-08 17:52:38

标签: silverlight mvvm datagrid

我有一个带有删除按钮的数据网格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);

最后定义了onDeleteCanDelete

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功能。我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

干杯! 维诺德