SelectionUnit=Cell 时如何获取所选 DataGrid 单元格的内容
How to get content of selected DataGrid cell when SelectionUnit=Cell
我想像这样获取用户选择的单元格的值:
然而事实证明它比我想象的更具挑战性。
我一直在挖掘这些内容:
DataGridCellInfo currentCell = MyDataGrid.CurrentCell;
DataGridCellInfo selectedCell = MyDataGrid.SelectedCells[0];
// object selectedItems = MyDataGrid.SelectedItems[0]; throws index out of range error
object selectedValue = MyDataGrid.SelectedValue; // null
object selectedItem = MyDataGrid.SelectedItem; // null
但我在其中任何一个中都找不到简单的文字。有谁知道从哪里得到值"MEH"?最好来自 DataGridCellInfo
类型。
提前致谢。
编辑:
我设法让它为 DataGridTextColumns
工作,但我也有 DataGridTemplateColumns
并且也需要它为那些工作。
public string GetSelectedCellValue()
{
DataGridCellInfo cellInfo = MyDataGrid.SelectedCells[0];
if (cellInfo == null) return null;
DataGridBoundColumn column = cellInfo.Column as DataGridBoundColumn;
if (column == null) return null;
FrameworkElement element = new FrameworkElement() { DataContext = cellInfo.Item };
BindingOperations.SetBinding(element, TagProperty, column.Binding);
return element.Tag.ToString();
}
有什么想法吗?
我让它工作了,但我需要将每列的 SortMemberPath 指定为 MyRowClass
的 属性。
public string GetSelectedCellValue()
{
DataGridCellInfo cells = MyDataGrid.SelectedCells[0];
YourRowClass item = cells.Item as YourRowClass;
// specify the sort member path of the column to that YourRowClass property
string columnName = cells.Column.SortMemberPath;
if (item == null || columnName == null) return null;
object result = item.GetType().GetProperty(columnName).GetValue(item, null);
if (result == null) return null;
return result.ToString();
}
我想像这样获取用户选择的单元格的值:
然而事实证明它比我想象的更具挑战性。
我一直在挖掘这些内容:
DataGridCellInfo currentCell = MyDataGrid.CurrentCell;
DataGridCellInfo selectedCell = MyDataGrid.SelectedCells[0];
// object selectedItems = MyDataGrid.SelectedItems[0]; throws index out of range error
object selectedValue = MyDataGrid.SelectedValue; // null
object selectedItem = MyDataGrid.SelectedItem; // null
但我在其中任何一个中都找不到简单的文字。有谁知道从哪里得到值"MEH"?最好来自 DataGridCellInfo
类型。
提前致谢。
编辑:
我设法让它为 DataGridTextColumns
工作,但我也有 DataGridTemplateColumns
并且也需要它为那些工作。
public string GetSelectedCellValue()
{
DataGridCellInfo cellInfo = MyDataGrid.SelectedCells[0];
if (cellInfo == null) return null;
DataGridBoundColumn column = cellInfo.Column as DataGridBoundColumn;
if (column == null) return null;
FrameworkElement element = new FrameworkElement() { DataContext = cellInfo.Item };
BindingOperations.SetBinding(element, TagProperty, column.Binding);
return element.Tag.ToString();
}
有什么想法吗?
我让它工作了,但我需要将每列的 SortMemberPath 指定为 MyRowClass
的 属性。
public string GetSelectedCellValue()
{
DataGridCellInfo cells = MyDataGrid.SelectedCells[0];
YourRowClass item = cells.Item as YourRowClass;
// specify the sort member path of the column to that YourRowClass property
string columnName = cells.Column.SortMemberPath;
if (item == null || columnName == null) return null;
object result = item.GetType().GetProperty(columnName).GetValue(item, null);
if (result == null) return null;
return result.ToString();
}