我通过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_DropScatter_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并为每个单独的ScatterViewItemListBoxItem挂接Drop事件处理程序。然后,事件的来源将是放置的项目。

09-05 17:12