我通过ScatterViewItem
事件将对象(SurfaceListBox
)放在s:SurfaceDragDrop
上,当检测到整个SurfaceListBox
的掉落时,它工作正常,但是,我想知道在哪个SurfaceListBoxItem
对象被丢弃。
我也想这样做,但要使用ScatterView
,即检测该对象上放置了该ScatterViewItem
的哪个ScatterView
。
我的代码是这样的:
<s:SurfaceListBox
x:Name="listBoxList"
Background="{x:Null}"
AllowDrop="True"
s:SurfaceDragDrop.Drop="ListBox_Drop" >
</s:SurfaceListBox>
<s:ScatterView
x:Name="scatterList"
Background="{x:Null}"
AllowDrop="True"
s:SurfaceDragDrop.Drop="Scatter_Drop" >
</s:ScatterView>
然后添加我的物品:
listBoxList.Items.Add("ListBox Item 1");
listBoxList.Items.Add("ListBox Item 1");
listBoxList.Items.Add("ListBox Item 1");
scatterList.Items.Add("ScatterViewItem A");
scatterList.Items.Add("ScatterViewItem B");
scatterList.Items.Add("ScatterViewItem C");
那么如何在
ListBox_Drop
和Scatter_Drop
上获取该项目?编辑
通过罗伯特的回答,我设法解决了我的问题。因此,结果代码将如下所示(对于
ScatterView
):<s:ScatterView
x:Name="scatterList"
Background="{x:Null}">
<s:ScatterView.ItemContainerStyle>
<Style TargetType="s:ScatterViewItem">
<EventSetter Event="s:SurfaceDragDrop.Drop" Handler="Scatter_Drop"/>
<Setter Property="AllowDrop" Value="True" />
</Style>
</s:ScatterView.ItemContainerStyle>
</s:ScatterView>
对于
SurfaceListBox
:<s:SurfaceListBox
x:Name="listBoxList"
Background="{x:Null}">
<s:SurfaceListBox.ItemContainerStyle>
<Style TargetType="s:SurfaceListBox">
<EventSetter Event="s:SurfaceDragDrop.Drop" Handler="ListBox_Drop"/>
<Setter Property="AllowDrop" Value="True" />
</Style>
</s:SurfaceListBox.ItemContainerStyle>
</s:SurfaceListBox>
最佳答案
您需要设置AllowDrop
并为每个单独的ScatterViewItem
和ListBoxItem
挂接Drop事件处理程序。然后,事件的来源将是放置的项目。