Drag and Drop в wpf. Те элементs которые я обьявил в xaml перетаскиваются, но когда я в listBox добавляю новые элементы они не перетаскиваются. Help>
Тут xaml
<Window x:Class="ФормаСписка.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ФормаСписка"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid x:Name="MainGrid">
<TextBox x:Name="txtSurname" HorizontalAlignment="Left" Margin="32,19,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<TextBox x:Name="txtName" HorizontalAlignment="Left" Margin="32,42,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<Button Content="Регистрация" HorizontalAlignment="Left" Height="38" Margin="32,88,0,0" VerticalAlignment="Top" Width="120" Click="Button_Click"/>
<ListBox x:Name="listBox" Margin="18,206,430,10" AllowDrop="True" Drop="listBox_Drop" PreviewMouseMove="listBox_PreviewMouseMove">
<ListBoxItem Content="123123"></ListBoxItem> </ListBox>
<Label Content="Фамилия" HorizontalAlignment="Left" Margin="157,15,0,0" VerticalAlignment="Top" Width="75" Height="26"/>
<Label Content="Имя" HorizontalAlignment="Left" Margin="157,37,0,0" VerticalAlignment="Top" Width="76" Height="27"/>
<TextBox x:Name="txtLogin" HorizontalAlignment="Left" Margin="32,65,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<Label Content="Логин" HorizontalAlignment="Left" Margin="157,60,0,0" VerticalAlignment="Top" Width="76" Height="27"/>
<ListBox x:Name="listBoxCommandPreview" Margin="400,321,48,11" AllowDrop="True" Drop="listBoxCommandPreview_Drop" PreviewMouseMove="listBoxCommandPreview_PreviewMouseMove"/>
<Button Content="Создать команду" HorizontalAlignment="Left" Margin="400,292,0,0" VerticalAlignment="Top" Click="CreateCommand" Height="23"/>
<Label x:Name="chek" Content="---" HorizontalAlignment="Left" Margin="400,261,0,0" VerticalAlignment="Top"/>
</Grid>
</Window>
xaml.cs
public partial class MainWindow : Window
{
List<UserInfo> users;
List<Teams> teams;
public MainWindow()
{
users = new List<UserInfo>();
teams = new List<Teams>();
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
users.Add(new(txtName.Text, txtSurname.Text, txtLogin.Text)); //Добавляет в лист users user'а по конструктору UserInfo, Имя и Фамилия. В конструкторе AllName = Фамилия + Имя//
txtName.Clear();
txtSurname.Clear();
txtLogin.Clear();
ListBoxRefresh();
}
private void ListBoxRefresh()
{
listBox.Items.Clear();
foreach (UserInfo user in users)
{
listBox.Items.Add(user.Login);
}
}
private void CreateCommand(object sender, RoutedEventArgs e)
{
listBoxCommandPreview.Items.Clear();
}
private void listBox_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetData(DataFormats.FileDrop) is ListBoxItem listItem)
{
listBox.Items.Add(listItem);
listBox.Items.Refresh();
}
}
private void listBoxCommandPreview_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetData(DataFormats.FileDrop) is ListBoxItem listItem)
{
listBoxCommandPreview.Items.Add(listItem);
listBoxCommandPreview.Items.Refresh();
}
}
private void listBox_PreviewMouseMove(object sender, MouseEventArgs e)
{
Point mPos = e.GetPosition(null);
if (e.LeftButton == MouseButtonState.Pressed &&
Math.Abs(mPos.X) > SystemParameters.MinimumHorizontalDragDistance &&
Math.Abs(mPos.Y) > SystemParameters.MinimumVerticalDragDistance)
{
try
{
ListBoxItem selectedItem = (ListBoxItem)listBox.SelectedItem;
listBox.Items.Remove(selectedItem);
DragDrop.DoDragDrop(this, new DataObject(DataFormats.FileDrop, selectedItem), DragDropEffects.Copy);
if (selectedItem.Parent == null)
{
listBox.Items.Add(selectedItem);
}
}
catch { }
}
}
private void listBoxCommandPreview_PreviewMouseMove(object sender, MouseEventArgs e)
{
Point mPos = e.GetPosition(null);
if (e.LeftButton == MouseButtonState.Pressed &&
Math.Abs(mPos.X) > SystemParameters.MinimumHorizontalDragDistance &&
Math.Abs(mPos.Y) > SystemParameters.MinimumVerticalDragDistance)
{
try
{
ListBoxItem selectedItem = (ListBoxItem)listBoxCommandPreview.SelectedItem;
listBoxCommandPreview.Items.Remove(selectedItem);
DragDrop.DoDragDrop(this, new DataObject(DataFormats.FileDrop, selectedItem), DragDropEffects.Copy);
if (selectedItem.Parent == null)
{
listBoxCommandPreview.Items.Add(selectedItem);
}
}
catch { }
}
}
}
}
Мне кажется проблема в try catch, когда я делаю проверку на то что выбранный элемент является выбранным элементом типа (ListBoxItem). Но это лишь предположение, так я не пойму почему не работает.