我想在单击一个单元格时找到datagrid列标题.我使用了以下代码
private void grid1_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
DependencyObject dep = (DependencyObject)e.OriginalSource;
while ((dep != null) &&
!(dep is DataGridColumnHeader))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
if (dep is DataGridColumnHeader)
{
DataGridColumnHeader columnHeader = dep as DataGridColumnHeader;
if (columnHeader.ToString() == "Adv Comments")
{
MessageBox.Show(columnHeader.Column.Header.ToString());
}
}
if (dep is DataGridCell)
{
DataGridCell cell = dep as DataGridCell;
}
}
Run Code Online (Sandbox Code Playgroud)
但是列标题不是datagrid单元格的直接父级,因此无法找到它.还有其他出路吗?
被点击的原始源并没有真正连接到所谓的项容器(请参阅DataGrid.ItemContainerGenerator),因此尝试自己动手实现层次结构,尽管一个好主意不会让你走得太远.
对于一个非常愚蠢的简单解决方案,您可以使用它的知识,只有一个单元被单击,因此使用该单击的单元格来检索列,如下所示:
private void DataGrid_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
// First check so that we´ve only got one clicked cell
if(myGrid.SelectedCells.Count != 1)
return;
// Then fetch the column header
string selectedColumnHeader = (string)myGrid.SelectedCells[0].Column.Header;
}
Run Code Online (Sandbox Code Playgroud)
这或许不是最漂亮的解决方案,但简单就是王道.
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
10884 次 |
| 最近记录: |