跟小D每日学口语

Silverlight DataGrid点击行(或选择行)引发的事件

问题:点击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());//加载数据信息
}

posted @ 2011-09-28 20:04  艾洁  阅读(2560)  评论(0编辑  收藏  举报