2 Stimmen

wpf ziehen und ablegen visuell Element auswählen

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 { }
    }

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X