当物体被放置在SurfaceListBox和ScatterView上时,获取SurfaceListBoxItem和Sca

本文关键字:上时 ScatterView 获取 Sca SurfaceListBoxItem SurfaceListBox | 更新日期: 2023-09-27 17:49:41

我用s:SurfaceDragDrop事件在SurfaceListBox上放置一个对象(ScatterViewItem),当检测到整个SurfaceListBox上的下降时,它工作得很好,但是,我想知道在哪个SurfaceListBoxItem中对象被丢弃。

我也想这样做,但是对于ScatterView,即检测对象被丢弃在ScatterView的哪个ScatterViewItem上。

我的代码是这样的:

<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>

当物体被放置在SurfaceListBox和ScatterView上时,获取SurfaceListBoxItem和Sca

您需要设置AllowDrop并为每个单独的ScatterViewItem &ListBoxItem。然后事件的源将是被掉落在上面的物品。

我认为这是对上述解决方案的一个小修正。

<Style TargetType="s:SurfaceListBoxItem">

相对
<Style TargetType="s:SurfaceListBox">