您的位置:首页 > 其它

通过Code Behind的方式,为DataGrid内的Button绑定事件

2011-05-17 16:40 239 查看
在Silverlight中,通常为DataGrid内的Button绑定单击事件,只需要在Button的内联属性Click上添加事件方法即可。

<sdk:DataGrid Name="grd">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="" Width="50" >
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="btnUpdateNum" CommandParameter="{Binding account}" Content="変更" Visibility="{Binding itemAttr, Converter={StaticResource BtnUpdateConverter}}"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>


这次由于实现的原因,需要将这一事件绑定的过程通过Code Behind的方式来绑定。

实现原理:

借助DataGrid的LoadingRow事件,在初始化DataGrid过程中,使用GetCellContent方法,来得到某一列的控件。

关键代码:

private void grd_LoadingRow(object sender, DataGridRowEventArgs e)
{
Button btnUpdateNum = this.grd.Columns[4].GetCellContent(e.Row).FindName("btnUpdateNum") as Button;
btnUpdateNum.Click += new RoutedEventHandler(btnUpdateNum_Click);
}

private void btnUpdateNum_Click(object sender, RoutedEventArgs e)
{

//TODO something
}


举一反三:

了解到DataGrid的LoadingRow事件后,在这里面也可以追加对控件的一些特殊控制的代码。比如得到该行DataContext后,根据

属性值来控制控件的内容或显示等等其他属性,替代一些需要用Converter来做的事情。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: