2010-03-22 1 views
1

У меня есть 2 StackPanel s - один содержит Ellipse, а другой - ничего.Как сохранить форму UIELement при выполнении перетаскивания в WPF

Я хочу перетащить Ellipse с одной панели стека на другую. Фактическое перетаскивание & Капля уже выполнена и отлично работает, однако я хотел бы знать, как сохранить эту форму Ellipse на кончике моего курсора мыши.

Даже пример Windows Forms был бы приятным, я смогу его адаптировать.

ответ

0

Вы хотите добавить своего перетаскивателя во время перетаскивания. Я видел это несколько раз, но быстрый поиск приводит к this behavior, который имеет приятный образец, как я видел. Представитель выборки:

void itemsControl_PreviewDragEnter(object sender, DragEventArgs e) 
    { 
     ItemsControl itemsControl = (ItemsControl)sender; 
     if (e.Data.GetDataPresent(ItemType)) 
     { 
      object data = e.Data.GetData(ItemType); 
      InitializeDragAdorner(itemsControl, data, e.GetPosition(itemsControl)); 
      InitializeInsertAdorner(itemsControl, e); 
     } 
     e.Handled = true; 
    } 

Они завернуть всю презентацию дрэг украшению красиво в DragAdorner классе. (Я бы хотел, чтобы я сделал это так, на самом деле)

Я также видел трюки с созданием украшения из Visual Brush изначально перетаскиваемого элемента, но я думаю, что мне нравится этот подход лучше всего до сих пор.

BTW: После приближения к этому несколько раз, я настоятельно рекомендую обернуть ваш код перетаскивания и перетащить его в поведение. В противном случае вы заканчиваете его повсюду. Получение командного права с MVVM может быть довольно сложным, но это того стоит, ИМХО.

+0

Спасибо за помощь :) – Kamikaze

 Смежные вопросы

  • Нет связанных вопросов^_^