0

希望这是一个简单的问题。我正在使用ListBoxDragDropTargetSilverlight Toolkit 中的 来设置从一个拖放ListBox到另一个。我似乎无法触发该事件。这是我的 XAML 代码:

<toolkit:ListBoxDragDropTarget HorizontalAlignment="Left"
                               HorizontalContentAlignment="Stretch"
                               VerticalAlignment="Top"
                               VerticalContentAlignment="Stretch"
                               Margin="39,117,0,0"
                               Grid.Row="1"
                               AllowDrop='True'>
  <ListBox x:Name='columnHeadings'
           MinHeight='100'
           MinWidth='100'>
  </ListBox>
</toolkit:ListBoxDragDropTarget>

<toolkit:ListBoxDragDropTarget AllowDrop='True'
                               Grid.Column='1'
                               Grid.Row='1'
                               HorizontalContentAlignment="Stretch"
                               VerticalContentAlignment="Stretch"
                               VerticalAlignment="Center"
                               HorizontalAlignment="Left">
  <ListBox x:Name='customerFields'
           Grid.Column='1'
           Grid.Row='1'
           Visibility='Collapsed'
           Drop='CustomerFieldsDrop'>
  </ListBox>
</toolkit:ListBoxDragDropTarget>

这是我在后台代码中的事件处理程序:

private void CustomerFieldsDrop(object sender, DragEventArgs e)
{
  MessageBox.Show(string.Format("Something was dropped!"));
}

正如你所看到的,我的目标是一些非常简单的东西。我尝试将事件处理程序分配给列表框的父ListBoxDragDropTargetcustomerFields;具有讽刺意味的是,这奏效了。

我在这里的目的是允许用户导入一个文本文件并在一个列表框中获取文件列标题的列表,然后将它们“连接”到第二个列表框中列出的数据字段。因此,没有列表重新排序或将项目从一个列表移动到另一个列表。

columnHeadings.ItemsSource属性是一个string[]对象。customerFields.ItemsSource属性是一个IEnumerable<string>对象。

任何见解将不胜感激。

4

1 回答 1

0

我认为 AllowDrop="True" 和 Drop="EventName" 属性需要在同一个元素中才能工作。您可能必须在 ListBox 本身中将 AllowDrop 属性设置为“True”:

<ListBox x:Name="customerFields" 
    Grid.Column="1" 
    Grid.Row="1" 
    Visibility="Collapsed"
    Drop="CustomerFieldsDrop"
    AllowDrop="True" 
</ListBox> 

或者将 Drop="CustomerFieldsDrop" 属性添加到 ListBoxDragDropTarget 标记:

<toolkit:ListBoxDragDropTarget AllowDrop='True'   
    Grid.Column='1'   
    Grid.Row='1'   
    HorizontalContentAlignment="Stretch"   
    VerticalContentAlignment="Stretch"   
    VerticalAlignment="Center"   
    HorizontalAlignment="Left"
    Drop="CustomerFieldsDrop">

任何一个都应该工作......

于 2012-05-31T21:50:16.290 回答