首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

silverlight中怎的获取datagrid中选择的行,

2012-10-14 
silverlight中怎样获取datagrid中选择的行,急!!!我在silverlight中使用了datagrid控件,在它的模板列中放置

silverlight中怎样获取datagrid中选择的行,急!!!
我在silverlight中使用了datagrid控件,在它的模板列中放置了一个HyperlinkButton控件,当点击某一个单元格中的HyperlinkButton控件时,我想获取该单元格所在的行和列的索引,请问怎么获取啊?

[解决办法]
还是重复一下在别的回贴中说过的内容,希望大家别嫌啰嗦:
1. 按照 MVVM 的思想,在 ListBox 和 DataGrid 中并不建议直接去访问用于绑定显示的控件,能通过 DataContext 的Model 去访问的,尽量通过 Model 去解决。
如楼主说的模板列中有 HyperlinkButton ,那么通过 其Click事件,

C# code
private void HyperlinkButton_Click(object sender, RoutedEventArgs e){    Model.XXXEntity dataItem = ((HyperlinkButton)sender).GetBindingExpression(HyperlinkButton.ContentProperty).DataItem as Model.XXXEntity ;    // 针对 dataItem 进行行的统计操作  }
[解决办法]
前几个回贴里的,链接里的写得不是挺好的吗?
grid.SelectedItems 是当前选中行的实体…… 

/// <summary>
/// 获取datagrid当前选中的单元格数据
/// 如果绑定的数据源为实体的话默认选中的当前记录为一条实体
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgcate_CurrentCellChanged(object sender, EventArgs e)
{
DataGrid grid = sender as DataGrid;
BookService.Book book = (BookService.Book)grid.SelectedItems[0];//获取当前选中的行数据并转换为对应的实体
MessageBox.Show(book.Title.ToString()); //打印该实体对应的属性值
}
[解决办法]
如果是多选,可以这样的:
/// <summary>
/// 获取已选择的列表
/// </summary>
public List<SampleInfo> samples
{
get
{
List<SampleInfo> saplst = new List<SampleInfo>();
for (int i = 0; i < dg_Samples.SelectedItems.Count; i++)
{
saplst.Add(dg_Samples.SelectedItems[i] as SampleInfo);
}
return saplst;
}
}

热点排行