将StackBnel上的TextBlock拖放到另一个上面

时间:2012-06-29 06:56:29

标签: c#

我有一个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>

带有AllowDrop=True的StackPanel应该接受TextBlock drop(文本blcoks可以从其他堆栈面板中删除)。如果TextBlock被删除StackPanel AllowDrop=True,它应该接受它作为它的子项,并将TextBlock替换为拖动的TextBlcok所在的位置。我已经通过查看文档实现了这一点,但这不喜欢工作,因为我能够使用DragEnter,拖动但不能删除文本框。

我还附上了我的简短示例项目(54 kB),我实现了同样的项目,但这不起作用。链接:http://www.mediafire.com/?ssvf95oa8bd5jh6

1 个答案:

答案 0 :(得分:0)

也许这可以你以正确的方式,当我需要将一行从一个网格拖放到第二个网格时,我做到了

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