问题:点击DataGrid某行的时候需要显示这条数据的明细信息(均显示在文本框中),可Silverlight中翻遍了也没找到类似Winform中DataGridView的Click事件的效果。
后面用了个投机取巧的方法,每行添加的时候会执行一个事件叫做LoadRow事件,刚好LoadRow能获取到新增行的信息,那么我们就可以在新增行上的数据下手了,先获取新增行对象,然后对行对象定制鼠标点击的操作。
Remind:LoadRow会在行新增和DataGrid排序的时候触发,删除行的时候不会触发此事件
上代码:
/*这个是LoadRow事件*/
private void dgOrder_LoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.MouseLeftButtonUp -= new MouseButtonEventHandler(Row_MouseLeftButtonUp);
e.Row.MouseLeftButtonUp += new MouseButtonEventHandler(Row_MouseLeftButtonUp);
//先取消该列的订阅事件,再重新订阅
//方法执行频率:当有新增一行只执行一次;当排序时,有多少行执行多少次
/*类似鼠标点击事件MouseLeftButtonUp,当然这不是MouseClick事件,silverlight中没有Button的Click事件*/
void Row_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
OrderDetail item = this.dgOrder.SelectedItem as OrderDetail;//获取点击行的信息
/*获取到对象了,下面就可以写自己所要做的工作的代码了*/
LoadFeedingTaste(item, item.ProductItem.Product_ID.ToString());//加载数据信息
}