xmlns:ig="http://schemas.infragistics.com/xaml"
このトピックではユーザーができるだけ早く Infragistics Drag and Drop Framework ライブラリの実行ができるよう、WPF アプリケーション内でドラッグ アンド ドロップ機能を実装するために必要な基本手順について説明します。
ソース パネルから xamPieChart コントロールをドラッグして対象パネルにドロップします。
Microsoft® WPF™ プロジェクトを作成します。
ソリューション エクスプローラーで以下の NuGet パッケージ参照をプロジェクトに追加します。NuGet フィードのセットアップと NuGet パッケージの追加の詳細については、NuGet フィード ドキュメントを参照してください。
Infragistics.WPF.DragDrop
Infragistics.WPF.Charts
開始 UserControl タグに Drag and Drop Framework の名前空間宣言を追加します。
XAML の場合:
xmlns:ig="http://schemas.infragistics.com/xaml"
xamPieChart コントロールによって視覚化されるサンプル データを提供します。この例は、開発者に提供された DataUtil クラスを使用します。
XAML の場合:
<UserControl.DataContext> <local:DataUtil x:Name="Data"/> </UserControl.DataContext>
2 つの行定義を "LayoutRoot" という名前のグリッド コンテナーに追加します。
XAML の場合:
<Grid x:Name="LayoutRoot"> <Grid.RowDefinitions> <RowDefinition Height="400" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <!-- TODO: Add the source and target StackPanels here. --> </Grid>
ドラッグされる xamPieChart コントロールを保持する最初の StackPanel コンテナーを追加します。
注: マウス イベントが処理されるようにするため、背景色を StackPanel に追加する必要があります。
XAML の場合:
<StackPanel Grid.Row="0" x:Name="sourcePanel" Background="LightYellow" <!-- TODO: Add the xamWebChart control that will be dragged. --> </StackPanel>
xamPieChart コントロールを sourcePanel コンテナーに追加します。
XAML の場合:
<ig:XamPieChart Width="480" Height="240" HorizontalAlignment="Left"
ItemsSource="{Binding Products}" LabelMemberPath="ProductName" ValueMemberPath="UnitPrice" ToolTip="{}Ultimate UI for WPF">
<!--TODO: Mark the XamPieChart control as draggable element and allow drag action -->
</ig:XamPieChart>
ドラッグ アンド ドロップ機能をチャートに追加します。これは、 DragSource オブジェクトを追加して以下のプロパティを設定することで実行されます:
IsDraggable – True
DragChannels – ChannelA (これは、このコントロールをドロップできる領域を指定します。詳細は、 ドラッグ アンド ドロップ チャネルを設定を参照してください)。
Drop – DragSource_Drop
XAML の場合:
<ig:DragDropManager.DragSource> <ig:DragSource IsDraggable="True" DragChannels="ChannelA" Drop="DragSource_Drop"> </ig:DragSource> </ig:DragDropManager.DragSource>
対象の StackPanel コンテナーを追加し、それがドラッグされたコントロールがドロップできる領域であることを示します。これは、 DropTarget オブジェクトを追加して以下のプロパティを設定することで実行されます:
IsDropTarget – True
DropChannels – ChannelA (これは DragChannels が ChannelA に設定された項目をここにドロップできることを指定します。詳細は、 ドラッグ アンド ドロップ チャネルを設定を参照してください)。
XAML の場合:
<StackPanel x:Name="targetPanel" Grid.Row="1" Background="LightGreen"> <ig:DragDropManager.DropTarget> <ig:DropTarget IsDropTarget="True" DropChannels="ChannelA"/> </ig:DragDropManager.DropTarget> </StackPanel>
コード ビハインドで、Drop イベントを処理します。この例では、xamPieChart コントロールは、対象のパネルに置かれ、ソース パネルから削除されます。
Visual Basic の場合:
Private targetChart As XamPieChart = Nothing
…
Private Sub DragSource_Drop(sender As Object, e As Infragistics.DragDrop.DropEventArgs)
Dim originalChart As XamPieChart = TryCast(e.DragSource, XamPieChart)
If targetChart Is Nothing Then
targetChart = New XamPieChart()
targetChart = originalChart
targetChart.AllowSliceExplosion = True
sourcePanel.Children.Remove(originalChart)
targetPanel.Children.Add(targetChart)
End If
End Sub
C# の場合:
private XamPieChart targetChart = null;
…
private void DragSource_Drop(object sender, Infragistics.DragDrop.DropEventArgs e)
{
XamPieChart originalChart = (e.DragSource as XamPieChart);
if (targetChart == null)
{
targetChart = new XamPieChart();
targetChart = originalChart;
targetChart.AllowSliceExplosion = true;
sourcePanel.Children.Remove(originalChart);
targetPanel.Children.Add(targetChart);
}
}
アプリケーションを保存して実行します。上のスタック パネルから下のスタック パネルの上に XamPieChart をドラッグできます。