前提・実現したいこと
WPFで図形をCanvas
にドラッグアンドドロップしたいです.
ただし,対象の図形自体をドラッグするのではなくて,コピーしたものを作成してドラッグしたいです.
ソースコード
Xaml
1<UsersControl.Resources> 2 <sys:Double x:Key="Radius">20</sys:Double> 3 <Style x:Key="TargetPointStyle" TargetType="{x:Type Path}" BasedOn="{StaticResource BasePointStyle}"> 4 <Setter Property="Fill" Value="Red" /> 5 <Setter Property="Stroke" Value="Red" /> 6 </Style> 7 8 <Style x:Key="BaseTextStyle" TargetType="{x:Type TextBlock}"> 9 <Setter Property="Opacity" Value="0.8" /> 10 <Setter Property="FontSize" Value="16" /> 11 </Style> 12 13 <Style x:Key="TargetTextStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource BaseTextStyle}"> 14 <Setter Property="Foreground" Value="Red" /> 15 </Style> 16</UsersControl.Resources> 17 18<!-- 省略 --> 19 20<TextBlock Text="Target Point" 21 Style="{StaticResource TargetTextStyle}" 22 Canvas.Left="10" 23 Canvas.Top="10"/> 24<!-- これをコピーしてドラッグしたい --> 25<Path Style="{StaticResource TargetPointStyle}"> 26 <Path.Data> 27 <EllipseGeometry Center="130 20" 28 RadiusX="{StaticResource Radius}" 29 RadiusY="{StaticResource Radius}"/> 30 </Path.Data> 31</Path> 32 33 34<!-- ここにドロップしたい --> 35<Canvas Grid.Row="1" Height="512" Width="512"> 36 <Image Source="sample.jpg" Stretch="UniformToFill"/> 37</Canvas>
調べたこと
自分で調べる限り,
- コードビハインド
- 添付ビヘイビア
- ライブラリ(Gong-wpf-dragdrop)
の3種類が見つかりましたが,ItemsControlの派生クラス(リストボックスなど)の中でItemを並び替えたりという例が多い印象でした.
自分のやりたいこととは,Canvas
の外側に設置してあるEllipse
などのShapeを,ドラッグアンドドロップでCanvasの上に持ってくることなので,少し調査結果とは違うのかなと思いました.
また,調べた内容では,Item自体をドラッグアンドドロップして動かすので,移動させたあとは,元の位置にはItemはないという状態が基本でした.
しかし,自分の場合は,コピーしたものをドラッグアンドドロップをしたいので,最終的にはCanvasの外側とCanvasの上にShapeが存在している状態にしたいです.
どのように実現すればいいのか,わからないのでご教示お願いします.
回答1件
あなたの回答
tips
プレビュー