3

我正在使用事件将对象 ( ScatterViewItem) 放在 a上,并且在检测到整个放置时它工作正常,但是,我想知道该对象被放置在哪个位置。SurfaceListBoxs:SurfaceDragDropSurfaceListBoxSurfaceListBoxItem

我也想这样做,但为了一个,ScatterView即检测对象被丢弃在哪个对象上。 ScatterViewItemScatterView

我的代码是这样的:

<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_Dropand上的项目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>
4

2 回答 2

1

您需要AllowDrop为每个单独的ScatterViewItem&设置和连接 Drop 事件处理程序ListBoxItem。然后事件的来源将是被丢弃的项目。

于 2012-12-28T15:00:57.880 回答
1

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

<Style TargetType="s:SurfaceListBoxItem">

反对

<Style TargetType="s:SurfaceListBox">
于 2013-05-11T10:05:38.453 回答