Estoy trabajando con WPF DataGrid. Tengo que arrastrar el encabezado de columna, colocarlo en algún otro control (por ejemplo, etiqueta) y realizar alguna operación. Pero no puedo arrastrar y soltar el encabezado de columna DataGrid. He intentado con el evento ColumnHeaderDragStarted, pero no puedo encontrar el objeto de encabezado de columna o solo el nombre del encabezado en el controlador. Cualquier ayuda por favor !!Cómo arrastrar y soltar el encabezado de columna DataGrid?
5
A
Respuesta
4
Tal vez esto le puede ayudar:
En XAML:
< DataGrid Name = "DataGrid" MouseRightButtonUp = "DataGrid_MouseRightButtonUp"/>
En C# Código:
private void DataGrid_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
DependencyObject dep = (DependencyObject)e.OriginalSource;
while ((dep != null) && !(dep is DataGridCell) && !(dep is DataGridColumnHeader))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
if (dep is DataGridColumnHeader)
{
DataGridColumnHeader columnHeader = dep as DataGridColumnHeader;
// find the property that this cell's column is bound to
string boundPropertyName = FindBoundProperty(columnHeader.Column);
int columnIndex = columnHeader.Column.DisplayIndex;
ClickedItemDisplay.Text = string.Format(
"Header clicked [{0}] = {1}",
columnIndex, boundPropertyName);
}
if (dep is DataGridCell)
{
DataGridCell cell = dep as DataGridCell;
// navigate further up the tree
while ((dep != null) && !(dep is DataGridRow))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
DataGridRow row = dep as DataGridRow;
object value = ExtractBoundValue(row, cell);
int columnIndex = cell.Column.DisplayIndex;
int rowIndex = FindRowIndex(row);
ClickedItemDisplay.Text = string.Format(
"Cell clicked [{0}, {1}] = {2}",
rowIndex, columnIndex, value.ToString());
}
}
/// <summary>
/// Determine the index of a DataGridRow
/// </summary>
/// <param name="row"></param>
/// <returns></returns>
private int FindRowIndex(DataGridRow row)
{
DataGrid dataGrid = ItemsControl.ItemsControlFromItemContainer(row) as DataGrid;
int index = dataGrid.ItemContainerGenerator.IndexFromContainer(row);
return index;
}
/// <summary>
/// Find the value that is bound to a DataGridCell
/// </summary>
/// <param name="row"></param>
/// <param name="cell"></param>
/// <returns></returns>
private object ExtractBoundValue(DataGridRow row, DataGridCell cell)
{
// find the property that this cell's column is bound to
string boundPropertyName = FindBoundProperty(cell.Column);
// find the object that is realted to this row
object data = row.Item;
// extract the property value
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(data);
PropertyDescriptor property = properties[boundPropertyName];
object value = property.GetValue(data);
return value;
}
/// <summary>
/// Find the name of the property which is bound to the given column
/// </summary>
/// <param name="col"></param>
/// <returns></returns>
private string FindBoundProperty(DataGridColumn col)
{
DataGridBoundColumn boundColumn = col as DataGridBoundColumn;
// find the property that this column is bound to
Binding binding = boundColumn.Binding as Binding;
string boundPropertyName = binding.Path.Path;
return boundPropertyName;
}
}
// This XAML and C# where extracted from a link contained on this URL:
// http://social.msdn.microsoft.com/Forums/en/wpf/thread/61707b8a-e6c6-474b-ac2b-3446319625bd
Cuestiones relacionadas
- 1. jqGrid reordenar columna de arrastrar y soltar
- 2. Agrupación con arrastrar y soltar en WGD DataGrid
- 3. Swing arrastrar y soltar
- 4. ItemsControl Arrastrar y soltar
- 5. ipad arrastrar y soltar
- 6. ¿Arrastrar y soltar polyfill?
- 7. Arrastrar y soltar el archivo de texto
- 8. Trello arrastrar y soltar efecto
- 9. arrastrar y soltar controles winform
- 10. desactivar texto arrastrar y soltar
- 11. Arrastrar y soltar con Ember.js
- 12. UICollectionView efectiva arrastrar y soltar
- 13. arrastrar y soltar objetos personalizados
- 14. Arrastrar y soltar usando SendMessage
- 15. jstree mover, arrastrar y soltar
- 16. Arrastrar y soltar en MobileSafari?
- 17. Arrastrar y soltar en Treeview
- 18. Javascript Arrastrar y soltar cuadrícula
- 19. HTML5 Arrastrar y soltar nodos
- 20. Arrastrar y soltar con columpio
- 21. arrastrar y soltar sin mover el elemento
- 22. Arrastrar y soltar formas en el lienzo
- 23. Arrastrar y soltar desde Thunderbird
- 24. NSTableView y NSOutlineView de arrastrar y soltar
- 25. Backbone simple uso de arrastrar y soltar
- 26. Arrastrar y soltar en Safari iOS: no arrastrar, no responder para soltar en el escritorio/iPad
- 27. UITableView toque y mantenga + arrastrar y soltar
- 28. JQuery Arrastrar y soltar problemas de posicionamiento
- 29. Texto de arrastrar y soltar sobre DIV
- 30. Implementar la función de arrastrar y soltar