【发布时间】:2011-08-01 07:15:48
【问题描述】:
微不足道,但我真的被它困住了......到底如何才能找出项目被丢弃在哪个 DataGrid 列(或标题)上?我在 DataGrid.Drop 事件中看不到任何可检索的信息。
【问题讨论】:
标签: wpf listview datagrid drag-and-drop
微不足道,但我真的被它困住了......到底如何才能找出项目被丢弃在哪个 DataGrid 列(或标题)上?我在 DataGrid.Drop 事件中看不到任何可检索的信息。
【问题讨论】:
标签: wpf listview datagrid drag-and-drop
我现在只是在编写一些 dataGrid D&D,我发现按照您的要求进行操作的唯一方法是将 Drop 侦听器放在每个 dataGridColumnHeader 和每个 DataGridCell 上。
在我写的时候,我的单元格、dataGridColumnHeaders 和 datagrids 上有 Drop 侦听器(用于数据网格背景中的 drop,以防你没有足够的行/列来填充 DG)。
这些侦听器在单元格的 drop 侦听器中使用 myDataGrid.Columns.IndexOf(((DataGridCell)sender).Column) 之类的东西获取单元格的行/列索引,然后在我的 DG 类中调用一个通用方法。
其实并没有你想的那么乱。
编辑:关于您的评论:“但是如何将事件处理程序附加到 DataGrid 标头?”
例如在您的 MyDataGrid.xaml 中:
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<EventSetter Event="DropEvent" Handler="ColumnHeaderDropHandler" />
</Style>
</DataGrid.ColumnHeaderStyle>
当然,你需要在后面的代码中实现 ColumnHeaderDropHandler。
【讨论】:
DataGrid 标头?
Error 1 The type reference cannot find a public type named 'DataGridColumnHeader'.