如何在wpf中单击DevExpress GridControl单元?

时间:2015-06-18 09:57:04

标签: c# wpf devexpress tableview gridcontrol

我有一个wpf应用程序,我在其中使用带有TableView的DevExpress GridControl。我的问题是我想获得点击的单元格。我在其他帖子上找到了解决方案:

private void TableView_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        TableViewHitInfo hitInfo = tableView.CalcHitInfo(e.GetPosition(MainControl));
        if (hitInfo.InRowCell)
        {
            object value = gridControl.MainView.GetRowCellValue(hitInfo.RowHandle, hitInfo.Column);
            //...
        }
    }

但网格控件没有名为MainView的属性。我做错了什么?或者你有解决我问题的其他方法吗?

2 个答案:

答案 0 :(得分:1)

用于获取单元格值的正确代码段应如下所示:

<dxg:GridControl ItemsSource="{Binding ...">
    <dxg:GridControl.View>
        <dxg:TableView AllowEditing="False" 
                       MouseLeftButtonUp="TableView_MouseLeftButtonUp"/>
    </dxg:GridControl.View>
</dxg:GridControl>


void TableView_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {
    TableView tableView = sender as TableView;
    TableViewHitInfo hitInfo = tableView.CalcHitInfo(e.OriginalSource as DependencyObject);
    if (hitInfo.InRowCell) {
        object value = tableView.Grid.GetCellValue(hitInfo.RowHandle, hitInfo.Column);
        // do something
    }
}

相关的帮助文章:Obtaining and Setting Cell Values

答案 1 :(得分:0)

MainView是GridControl在此示例中使用的View的名称。如果您已重命名或命名了您的视图,否则您显然还需要更改代码以使用该名称:

object value = MyGridControl.MyGridView.GetRowCellValue(hitInfo.RowHandle, hitInfo.Column);

或更简单,因为视图应该已经在范围内了:

object value = MyGridView.GetRowCellValue(hitInfo.RowHandle, hitInfo.Column);