2010-07-14 2 views
0

Использование функций drag'n'drop в Silverlight 4 Toolkit, у меня есть включенный drag'n'drop Listbox, где каждый ListboxItem можно перетаскивать/переупорядочивать вверх и вниз.Silverlight: Определите, какой элемент управления инициирован drag'n'drop

Каждый ListboxItem содержит несколько элементов управления (TextBlocks, TextBoxes и Buttons), и моя проблема заключается в том, что когда я нажимаю кнопки в ListboxItem, я буду иногда инициировать событие перетаскивания, а не просто событие click на этом элементе управления.

Одним из решений было бы обработать событие ItemDragStarting и определить, на что было нажато, чтобы начать событие - и отменить событие, если оно вызвано кнопкой.

Однако я не могу определить, как определить, на что я нажал. Отправитель события и e.DragSource имеет тип ListBoxDragDropTarget, независимо от того, инициирую ли я перетаскивание с помощью кнопки или самого элемента ListboxItem.

Любая помощь будет оценена по достоинству - решения моей проблемы или альтернативные методы выполнения того, что мне нужно!

ответ

1

Вы можете перейти к типу объекта, используя следующий метод:

private void OldFaithful_ItemDragStarting(object sender, ItemDragEventArgs e) 
     { 
      SelectionCollection selections = e.Data as SelectionCollection; 

      if (selections != null) 
      { 
       IEnumerable<CXSectionControl> draggedItems = selections.Select(s => s.Item as YOUREXCPECTEDOBJECTTYPE); 
       foreach (YOUREXCPECTEDOBJECTTYPE x in draggedItems) 
       { 
        MessageBox.Show(x.GetType().ToString()); 
       } 

      } 
     } 
+0

Спасибо большое за ответ :) Я узнал большинство моих проблем были связаны с использованием виртуальной машины, чтобы сделать разработку, которая в результате моя мышь делает странные вещи. Однако сохранит ваш фрагмент для последующего использования! – Claus

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