2011-08-01 58 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也不太熟悉。您的解決方案正常工作 - 感謝您的幫助。 –