2011-04-20 24 views
3

はたぶん私の質問はnoobyですが、私は答えを見つけることができませんでした...私は、WPFのドラッグ&ドロップアプリを持っているWPFのドラッグ&ドロップとデータ型

... 私はインターフェイスを構築しています機能を追加したいと思います...

デザイナーエリアにアイテムをドロップすると、 ドロップされたオブジェクトのタイプを取得し、それを特定の構造体/リストなどに追加します。 ...

どうすればいいですか? ありがとう! g。 g。

答えて

7

はあなたがドラッグの開始を制御すると仮定すると、(あなたが他のアプリからドラッグしていない)、それはタイプが何であるかはあなた次第です。ソースと目的地のコードを一致させるだけです。ドラッグ中(通常はMouseMoveまたはMouseDownハンドラ):

 var dragData = new DataObject(typeof(JobViewModel), job); 
     DragDrop.DoDragDrop(element, dragData, DragDropEffects.Move); 

ドラッグを開始します。そして、ドロップ(あなたがここまで得ているように聞こえる)に:

 var dataObj = e.Data as DataObject; 
     var dragged = dataObj.GetData(typeof(JobViewModel)) as JobViewModel; 

また、文字列の代わりのタイプを使用することができます。

1

コントロールのAllowDropプロパティをtrueに設定するだけです。その上にDropイベントを実装します。イベント引数のドロップ情報にアクセスできます。

GetDataの部分では、これを使用して特定のデータ型を取得できます。ここでは例えば、ファイルドロップは次のとおりです。

string[] fileNames = (string[])e.Data.GetData(DataFormats.FileDrop, true); 

おかげで、

+0

私はこれまで行ってしまった! :) 私の問題は、 'OnDrop(DragEventArgs e)'でデータ型を取得する方法です... getDataを使用してですか?どのようなタイプですか? 私は私のオブジェクトのタイプを使用する場合、私はnullを取得... あなたの助けをありがとう! – geo

+0

私は自分の答えを更新しました。 – Howard

関連する問題