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>

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

我还附上了我的简短示例项目(54 kB),我在其中实施了相同的操作,但这是行不通的。链接:http ://www.mediafire.com/?ssvf95oa8bd5jh6

4

1 回答 1

0

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

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

于 2012-06-29T06:58:51.690 回答