【问题标题】:Drag & drop list view item on a Datagrid header in WPF在 WPF 中的 Datagrid 标题上拖放列表视图项
【发布时间】:2011-08-01 07:15:48
【问题描述】:

微不足道,但我真的被它困住了......到底如何才能找出项目被丢弃在哪个 DataGrid 列(或标题)上?我在 DataGrid.Drop 事件中看不到任何可检索的信息。

【问题讨论】:

    标签: wpf listview datagrid drag-and-drop


    【解决方案1】:

    我现在只是在编写一些 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'.
    • 没关系;我让它工作。 XAML 中的命名空间引用不是很直观,而且我不太擅长 WPF。您的解决方案运行良好 - 感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多