我正在尝试将一些内容删除到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中执行水平滚动的数量?
还有另一种方法可以获取执行放置的列吗?
答案 0 :(得分:1)
如何在DataGrid中执行水平滚动量?
您可以使用VisualTreeHelper
类来获取对DataGrid
的{{1}}元素的引用,然后访问其ScrollViewer
属性:
HorizontalOffset