2012-05-25 41 views
0

希望这是一个简单的问题。我使用Silverlight Toolkit中的ListBoxDragDropTarget来设置从一个ListBox到另一个的拖放。我似乎无法让事件发生。这是我的XAML代码:拖动事件不会为Silverlight中的ListBox启动

<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!")); 
} 

正如你所看到的,我的目标是为真实的东西简单。我试着为customerFields列表框指定一个事件处理程序给父节点ListBoxDragDropTarget;讽刺的是,这工作。

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

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

任何有识之士将不胜感激。

回答

0

我认为AllowDrop =“True”和Drop =“EventName”属性需要在同一个元素内工作。你可能必须设置AllowDrop属性为“True”,在列表框本身:

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

或者投递=“CustomerFieldsDrop”属性添加到ListBoxDragDropTarget标签:

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

无论是一个人应该工作。 ..