我有一个带有删除按钮的数据网格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
功能。我做错了什么?
答案 0 :(得分:1)
基本上,Command绑定将在Object中查找DeleteRowCommand属性(我的意思是作为ItemSource绑定到datagrid的对象列表)。因此,如果使用SL5,则需要设置绑定源或使用relativesource。
干杯! 维诺德