我正在使用DragDropListBoxTarget
中的Silverlight Toolkit
控件来支持拖放行为。但我面临着这种控制的问题。
很难掌握掉掉项目的目标元素。在ItemDroppedOnTarget事件参数中必须有东西。
当我拖动项目时,我需要在用户删除它时,中间事件应该修改目标项目。但我找不到实施它的方法。
我使用的是正确的控件,还是我还有其他选择?
答案 0 :(得分:1)
我遇到了同样的问题。我最终使用了this drag-drop tool。我重新编译了Silverlight 5的源代码。它让我知道了目标。当我使用工具包DragDropTarget控件时,我也很懒,仍然想要你所拖动的任何幽灵拖动图片,所以我保留了我的源代码,并且还包含在新的拖放工具中。
我定义拖动的方式:
<toolkit:ListBoxDragDropTarget AllowedSourceEffects="Copy">
<ListBox ItemsSource="{Binding Path=UnitOfWork.Templates}" Width="130" Height="360" BorderThickness="0">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<dd:DragSource>
<TextBlock Text="{Binding Path=Name}" Width="120"/>
</dd:DragSource>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</toolkit:ListBoxDragDropTarget>
<dd:DropTarget Grid.Row="2" AllowDrop="True" OnDropped="Target_OnDropped">
<Border BorderBrush="Black" BorderThickness="1" Width="98" Height="30">
<TextBlock Text="Drop Here" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</dd:DropTarget>
这样可以保持 ListBoxDragDropTarget 创建的拖动重影,同时允许我使用 dd:DragSource 和 dd:DropTarget 控件允许更细粒度的拖拽。