2011-08-01 12 views

答えて

1

私はちょうど今いくつかのデータグリッドD & Dをプログラミングしています。あなたが求めていることがわかった唯一の方法は、各DataGridColumnHeaderと各DataGridCellにドロップリスナーを置くことです。

私が書いているように、私は自分のセルにdataGridColumnHeadersとdatagridsをドロップリスナーを持っています(DGを埋めるのに十分な行数/カラム数を持たない場合は、DataGridの背景にドロップします)。

これらのリスナーは、セルのドロップリスナーに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があまりよくありません。あなたのソリューションは正常に動作します。 –

関連する問題