バージョン

Infragistics Drag and Drop Framework について

Infragistics Drag and Drop Framework ライブラリはドラッグ アンドドロップ機能のアプリケーションへの追加を可能な限り簡単にするために必要なピースを提供します。これによって要素のリアルタイムの移動とよりユーザー フレンドリーな操作が可能になります。

ドラッグされた項目を有効にするには、 DragSource のオブジェクトの IsDraggable プロパティを True に設定します。

XAML の場合:

<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>

ドロップ ターゲットを設定するには、 DropTarget オブジェクトの IsDropTarget プロパティを True に設定します。

XAML の場合:

<StackPanel x:Name="TargetPanel" Background="White" Orientation="Vertical">
   <ig:DragDropManager.DropTarget>
      <ig:DropTarget IsDropTarget="True"
                  DropChannels="ChannelA">
      </ig:DropTarget>
   </ig:DragDropManager.DropTarget>
</StackPanel>

項目をドロップ ターゲットにドラッグするには、ソースとターゲットの両方が同じドラッグ アンド ドロップ チャネルに属している必要があります。詳細は、 「ドラッグ アンド ドロップ チャネルを設定」を参照してください。DragChannels プロパティと DropChannels プロパティが設定されていない場合、デフォルトチャネルが使用されます。

Note

注: フレームワーク内でマウス イベントを処理するためには、ドラッグ ソース要素とドロップ ターゲット要素の Background プロパティを設定する必要があります。Null 値を持つことはできません。

ドラッグ操作が起動された時と同じように、ドラッグされる要素のスナップショット画像がキャプチャされて、 DragObject の内部に作成されたインスタンスに格納されます。これは内部で管理される ContentControl の DataContext として設定されます。

また ContentControl.ContentControlTemplate が DragSource オブジェクトの DragTemplate プロパティに設定されます。

DragObject オブジェクトは以下の 2 つのプロパティを公開します:

  • Data - このプロパティは、ドラッグされるデータを表すオブジェクトのインスタンスを取得します。このオブジェクトは DragSource.DataObject によって設定されるか、設定されている場合には DragSource.DataObjectBinding の結果です。

  • DragImage - このプロパティはドラッグ アンド ドロップ操作を起動した UIElement のスナップショットを表す画像を取得します。

以下のコードはデータ テンプレートを DragSource オブジェクトの DragTemplate プロパティに指定する方法を示します。

XAML の場合:

<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 でスタイルを使用します。