我有一个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
答案 0 :(得分:0)
也许这可以你以正确的方式,当我需要将一行从一个网格拖放到第二个网格时,我做到了
http://johnnblade.wordpress.com/2012/06/12/drag-and-drop-grid-control-row-devexpress-wpf/