datagridcell的空弹出窗口

时间:2011-09-23 08:24:27

标签: c# .net wpf

我正在使用Popup(System.Windows.FrameworkElement.Popup)向用户显示注释,例如: 他超过了文本框中的最大字符串长度。

我正在使用PlacementTarget属性来指定frameworkElement,以确保Popup显示在相应控件附近而不是鼠标指针附近。

对于普通的textBox,一切正常,但在数据网格中使用弹出窗口会产生问题。

使用带有PlacementTarget的弹出窗口= theDataGrid正在运行,但弹出窗口显示在数据网格的左上角 (使用Placement = PlacementMode.Left)但我想显示触发弹出窗口显示的单元格附近的弹出窗口。

现在我使用以下代码来确定相应的DataGridCell:

static DataGridCell TryToFindGridCell(DataGrid grid, DataGridCellInfo cellInfo)
{
DataGridCell result = null;
DataGridRow row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromItem(cellInfo.Item);
if (row != null)
{
    int columnIndex = grid.Columns.IndexOf(cellInfo.Column);
    if (columnIndex > -1)
    {
        DataGridCellsPresenter presenter = VisualTreeHelperMethods.GetVisualChild<DataGridCellsPresenter>(row);
        result = presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex) as DataGridCell;
    }
}

return result;
}

似乎工作正常,但使用DataGridCell(与DataGridCellInfo形成对比的FrameworkElement)具有效果,

  • 弹出窗口显示在DataGridCell附近的正确位置

  • 但是空的

任何人都可以帮助或解释为什么弹出窗口是空的吗?

现在我坚持使用PlacementTarget = theDataGrid来显示弹出窗口,但这有点令人不满意。

0 个答案:

没有答案