Ich verwende Drag & Drop in meinem Programm und es funktioniert gut. Aber ich arbeite mit einer Liste von Wörtern in einer Listbox und wenn ich ein Wort auswähle und es in eine andere Listbox ziehe, weiß der Benutzer nicht mehr, welches Wort er ausgewählt hat, weil die "visuelle" Auswahl des Elements in der ersten Listbox nicht erscheint. Weiß jemand, wie ich das ausgewählte Element in der Listbox sehen kann? Bevor ich Drag and Drop implementiert habe, bekam das ausgewählte Wort eine andere Farbe, wenn ich das Wort auswählte, aber als ich Drag and Drop hinzugefügt habe, sehe ich es nicht mehr. Kann mir jemand helfen?
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 { }
}
}