Я использую перетаскивание в моей программе, и она работает хорошо. Но я работаю со списком слов в списке, и когда я выбираю слово и перетаскиваю его в другой список, пользователь больше не знает, какое слово он выбрал, потому что «визуальный» выбор элемента в первом списке не не появляется. Кто-нибудь знает, как я могу увидеть выбранный элемент в списке? До того, как я реализовал перетаскивание, выбранное слово приобрело другой цвет при выборе слова, но когда я добавил перетаскивание, я его больше не вижу. Кто-нибудь может мне помочь?
http://img196.imageshack.us/img196/8408/imgmt.jpg
private void lstAlleTabellen_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
startpoint = e.GetPosition(null);
}
private void lstAlleTabellen_MouseMove(object sender, MouseEventArgs e)
{
// Get the current mouse position
System.Windows.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)
{
// Get the dragged ListViewItem
System.Windows.Controls.ListBox listAlle = sender as System.Windows.Controls.ListBox;
ListBoxItem listItem =
FindAnchestor<ListBoxItem>((DependencyObject)e.OriginalSource);
Tabel tabel=new Tabel();
try
{
// Find the data behind the ListViewItem
tabel = (Tabel)listAlle.ItemContainerGenerator.
ItemFromContainer(listItem);
// Initialize the drag & drop operation
DataObject dragData = new DataObject("myFormat", tabel);
DragDrop.DoDragDrop(listItem, dragData, DragDropEffects.Move);
}
catch
{
}
}
}
private static T FindAnchestor<T>(DependencyObject current) where T : DependencyObject
{
do
{
if (current is T)
{
return (T)current;
}
current = VisualTreeHelper.GetParent(current);
}
while (current != null);
return null;
}
private void lstGekozenTabellen_DragEnter(object sender, DragEventArgs e)
{
if (!e.Data.GetDataPresent("myFormat") ||sender == e.Source)
{
e.Effects = DragDropEffects.None;
}
}
private void lstGekozenTabellen_Drop(object sender, DragEventArgs e)
{
try
{
if (e.Data.GetDataPresent("myFormat"))
{
Tabel tabel = e.Data.GetData("myFormat") as Tabel;
System.Windows.Controls.ListBox listGekozen = sender as System.Windows.Controls.ListBox;
listGekozen.DisplayMemberPath = "naam";
listGekozen.SelectedValuePath = "naam";
listGekozen.Items.Add(tabel);
lTabellen.Remove(tabel);
lstAlleTabellen.ItemsSource = null;
lstAlleTabellen.Items.Clear();
lstAlleTabellen.ItemsSource = lTabellen;
}
}
catch { }
}
}