如何获取DataGrid水平滚动大小?

时间:2017-05-30 13:50:26

标签: c# wpf datagrid

我正在尝试将一些内容删除到DataGrid,删除的内容必须映射到执行删除的列。

为此,我设置 Datagrid.AllowDrop = true 并使用它的width属性计算列。

private void DGrdDatosImportar_Drop(object sender, DragEventArgs e)
{
    var dropPos = e.GetPosition(DGrdDatosImportar);
    double RefPos = DGrdDatosImportar.RowHeaderActualWidth;
    DataGridColumn SelecteCol = null;
    foreach (DataGridColumn Col in DGrdDatosImportar.Columns.ToList())
    {
        double ColWidth = Col.ActualWidth;
        if (dropPos.X >= RefPos && dropPos.X <= (RefPos + ColWidth))
        {
            SelecteCol = Col;
            break;
        }
        RefPos += ColWidth;
    }

    if (SelecteCol != null)
    {
        if (e.Data.GetDataPresent("IImportProperty"))
        {
            ImportColumn ImpCol = (ImportColumn)SelecteCol;
            IImportProperty prop = e.Data.GetData("IImportProperty") as IImportProperty;
            Importar source = ((Importar)GrdMain.DataContext);
            source.EmparecarColumna2Excel(prop, ImpCol.ColParms);
        }
    }
}

当所有列都适合我的屏幕时效果很好,但是当执行水平滚动时它会失败。

我正在搜索我的Datagrid上的任何属性,它允许我执行水平滚动,但找不到任何东西,每列都相同,但没有:(

如何在DataGrid中执行水平滚动的数量?

还有另一种方法可以获取执行放置的列吗?

1 个答案:

答案 0 :(得分:1)

  

如何在DataGrid中执行水平滚动量?

您可以使用VisualTreeHelper类来获取对DataGrid的{​​{1}}元素的引用,然后访问其ScrollViewer属性:

HorizontalOffset