2011-08-01 60 views

回答

1

我现在只是编程一些dataGrid D & D,我发现要做的只是将Drop监听器放在每个dataGridColumnHeader和每个DataGridCell上。我已经在我的单元格,dataGridColumnHeaders和datagrids(对于datagrid的背景中的下拉列表,以防万一您没有足够的行/列来填充DG)中放置监听器)。

这些监听器在单元的drop listener中使用类似myDataGrid.Columns.IndexOf(((DataGridCell)sender).Column)的应用获取单元的Row/col索引,然后调用DG类中的常用方法。

它实际上没有你想象的那么混乱。

编辑:关于您的评论:“但是,如何将事件处理程序附加到DataGrid标头?”

在MyDataGrid.xaml

例如:

<DataGrid.ColumnHeaderStyle> 
    <Style TargetType="{x:Type DataGridColumnHeader}"> 
     <EventSetter Event="DropEvent" Handler="ColumnHeaderDropHandler" /> 
    </Style> 
</DataGrid.ColumnHeaderStyle> 

,当然,你需要在你的代码来实现ColumnHeaderDropHandler落后。

+0

但是,你如何将一个事件处理程序附加到'DataGrid'标题? –

+0

我试过了,但我得到一个错误:'错误1类型引用无法找到名为'DataGridColumnHeader'的公共类型。“#: –

+0

Nevermind;我得到它的工作。 XAML中的名称空间引用不太直观,我对WPF也不太熟悉。您的解决方案正常工作 - 感谢您的帮助。 –