<StackPanel Background="White" Orientation="Horizontal">
<Border>
<Image Source="/Images/select.png" Stretch="Fill">
<ig:DragDropManager.DragSource>
<ig:DragSource IsDraggable="True" DragChannels="ChannelA"
Drop="DragSource_Drop">
</ig:DragSource>
</ig:DragDropManager.DragSource>
</Image>
</Border>
<!-- さらに要素を追加します -->
</StackPanel>
<StackPanel x:Name="TargetPanel" Background="White" Orientation="Vertical">
<ig:DragDropManager.DropTarget>
<ig:DropTarget IsDropTarget="True"
DropChannels="ChannelA">
</ig:DropTarget>
</ig:DragDropManager.DropTarget>
</StackPanel>
Note
|
注: フレームワーク内でマウス イベントを処理するためには、ドラッグ ソース要素とドロップ ターゲット要素の Background プロパティを設定する必要があります。Null 値を持つことはできません。
|
ドラッグ操作が起動された時と同じように、ドラッグされる要素のスナップショット画像がキャプチャされて、 DragObject の内部に作成されたインスタンスに格納されます。これは内部で管理される ContentControl の DataContext として設定されます。
また ContentControl.ContentControlTemplate が DragSource オブジェクトの DragTemplate プロパティに設定されます。
DragObject オブジェクトは以下の 2 つのプロパティを公開します:
-
Data - このプロパティは、ドラッグされるデータを表すオブジェクトのインスタンスを取得します。このオブジェクトは DragSource.DataObject によって設定されるか、設定されている場合には DragSource.DataObjectBinding の結果です。
-
DragImage - このプロパティはドラッグ アンド ドロップ操作を起動した UIElement のスナップショットを表す画像を取得します。
以下のコードはデータ テンプレートを DragSource オブジェクトの DragTemplate プロパティに指定する方法を示します。
<DataTemplate x:Key="itemsTemplate">
<StackPanel Background="#FFC1C1C1" Orientation="Horizontal">
<TextBlock Text="{Binding Data.Description}" />
<ContentControl Content="{Binding Path=DragImage}"/>
</StackPanel>
</DataTemplate>
上記の例で、DragObject.Data プロパティに指定されたオブジェクトはプロパティ Description を持っていることを前提とします。
項目がドラッグされる間、適切なドロップ ターゲットに対して基本のビジュアル ツリーが調べられます。ドロップ ターゲットが見つかると、フレームワークはドロップ ターゲット上に半透明の図形を描画することによって視覚的に示します。DropTarget オブジェクトの DropTargetMarkerBrush プロパティを設定することによってこの図形の色を設定できます。デフォルトの色は透明です。
ドロップ ターゲットでプロパティ自身に直接インラインが設定されている場合、 DropTargetStyle で設定するプロパティはドロップターゲットに影響しません。インラインを設定する代わりに DropTarget に設定されているプロパティ設定を DropTargetStyle のプロパティ設定がオーバーライドするようにしたい場合には、DropTarget でスタイルを使用します。