从列表框中拖放项目时出现了一些错误

本文关键字:错误 列表 拖放 项目 | 更新日期: 2023-09-27 18:28:03

我有一个ListBox,我想在矩形上拖放项目。当我只有物品而不是ItemsSourceItemTemplate时,一切都还可以,但现在它是从集合中填充的。一旦我把它放在矩形上,我希望另一个TextBox显示属性"保护"的值

XAML

<ListBox 
   x:Name="listhelmets" 
   Height="214" 
   Width="248" 
   ItemsSource="{Binding ListHelmets}" 
   IsSynchronizedWithCurrentItem="True" 
   Canvas.Left="211" 
   Canvas.Top="72" 
   PreviewMouseDown="helmet_MouseDown1"    
   PreviewMouseLeftButtonDown="helmet_PreviewMouseLeftButtonDown"
   PreviewMouseMove="helmet_PreviewMouseMove">
   <ListBox.ItemTemplate >
      <DataTemplate >
         <StackPanel Orientation="Horizontal">
            <Image Source="{Binding Path=Image}" Width="56" Height="61"/>
            <TextBox Text="{Binding Path=protection}" Width="30" Height="20" />
         </StackPanel>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

后面的代码

 private void helmet_MouseDown1(object sender, MouseButtonEventArgs e)
    {
        _startPoint = e.GetPosition(null);

    }
    private void helmet_PreviewMouseMove(object sender, MouseEventArgs e)
    {
        Point mousePos = e.GetPosition(null);
        Vector diff = _startPoint - mousePos;
        if (e.LeftButton == MouseButtonState.Pressed &&
  (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance ||
  Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance))
        {
            var listBox = sender as ListBox;
            var listBoxItem = listBox.SelectedItem;
            DataObject dragData = new DataObject(_dropIdentifier, listBoxItem);
            DragDrop.DoDragDrop(listBox, dragData, DragDropEffects.Move);
        } 
    }
    private void armature_MouseDown(object sender, MouseButtonEventArgs e)
    {
        _startPoint = e.GetPosition(null);
    }
    private void armature_PreviewMouseMove(object sender, MouseEventArgs e)
    {
        Point mousePos = e.GetPosition(null);
        Vector diff = _startPoint - mousePos;
        if (e.LeftButton == MouseButtonState.Pressed &&
  (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance ||
  Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance))
        {
            var listBox = sender as ListBox;
            var listBoxItem = listBox.SelectedItem;
            DataObject dragData = new DataObject(_dropIdentifier, listBoxItem);
            DragDrop.DoDragDrop(listBox, dragData, DragDropEffects.Move);
        } 
    }
    private void weapons_MouseDown(object sender, MouseButtonEventArgs e)
    {
        _startPoint = e.GetPosition(null);
    }
   private void weapons_PreviewMouseMove(object sender, MouseEventArgs e)
    {
        Point mousePos = e.GetPosition(null);
        Vector diff = _startPoint - mousePos;
        if (e.LeftButton == MouseButtonState.Pressed &&
  (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance ||
  Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance))
        {
            var listBox = sender as ListBox;
            var listBoxItem = listBox.SelectedItem;
            DataObject dragData = new DataObject(_dropIdentifier, listBoxItem);
            DragDrop.DoDragDrop(listBox, dragData, DragDropEffects.Move);
        } 
    }

从列表框中拖放项目时出现了一些错误

一切都很好。我会发布这篇文章,以防有人试图从列表框拖放