Я еще не посмотрел на DataGridDragDropTarget
, но вы не могли бы просто
protected override DataGridRow ContainerFromIndex(DataGrid itemsControl, int index)
{
var row = base.ContainerFromIndex(itemsControl, index);
if (row != null)
{
// do something with row
}
}
?
Если это не реализовано по какой-либо причине, вы можете попробоватьэто:
// requires Assembly System.Windows.Controls.Toolkit.dll
using System.Windows.Controls.Primitives;
// ...
protected override DataGridRow ContainerFromIndex(DataGrid itemsControl, int index)
{
var rowsPresenter =
itemsControl.GetVisualDescendants()
.OfType<DataGridRowsPresenter>().FirstOrDefault();
if (rowsPresenter != null)
{
var row = rowsPresenter.Children[index];
// do something with row
}
}
Я не знаю, однако, как вы хотите осуществить переупорядочение строк.Скорее всего, вы должны сами отслеживать свои индексы и возвращать одно из ваших собственных сохраненных значений индекса в этом методе.