0

次のようなドラッグドロップ機能を実装している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

4

1 に答える 1

0

多分これは正しい方法であなたをすることができます、私は1つのグリッドから2番目のグリッドに行をドラッグアンドドロップする必要があるときにそれを作りました

http://johnnblade.wordpress.com/2012/06/12/drag-and-drop-grid-control-row-devexpress-wpf/

于 2012-06-29T06:58:51.690 に答える