次のようなドラッグドロップ機能を実装しているC#アプリケーションがあります。
<Grid>
<StackPanel Orientation="Horizontal" Height="34" VerticalAlignment="Top">
<TextBlock Text="This is satck panel 1" Padding="0, 10, 20, 10"/>
<StackPanel Orientation="Horizontal" AllowDrop="True" DragEnter="StackPanel_DragEnter" DragLeave="StackPanel_DragLeave" DragOver="StackPanel_DragOver" Drop="StackPanel_Drop" MouseMove="StackPanel_MouseMove" GiveFeedback="StackPanel_GiveFeedback" >
<Border CornerRadius="1" BorderBrush="Black" BorderThickness="1">
<TextBlock Text="Text1"/>
</Border>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" Height="30" Margin="0,40" VerticalAlignment="Top">
<TextBlock Text="This is stack panel 2" Padding="0,10,20,10"/>
<Border CornerRadius="1" BorderBrush="Black" BorderThickness="1">
<TextBlock Text="Text2"/>
</Border>
</StackPanel>
</Grid>
私が実際にこれをしなければならないのは、リストボックスに次の形式の各アイテムを入力することです。
StackPanel> <TextBlock> </TextBlock> **<StackPanel AllowDrop> <TextBlock /> </StackPanel>** </StackPanel>
StackPanel withAllowDrop=True
は、TextBlockドロップを受け入れる必要があります(テキストblcoksは他のスタックパネルからドロップできます)。TextBlockが上にドロップされた場合StackPanel AllowDrop=True
、それを子として受け入れ、TextBlockをドラッグされたTextBlcokが来た場所に置き換える必要があります。ドキュメントを見てこれを実装しましたが、DragEnter、Drag Leaveは使用できますが、テキストボックスをドロップできないため、これは機能しません。
短いサンプルプロジェクト(54 kB)も添付していますが、同じものを実装しましたが、これは機能しません。リンク:http ://www.mediafire.com/?ssvf95oa8bd5jh6