2010-07-14 28 views
0

使用Silverlight 4工具包的drag'n'drop功能,我有一個拖放功能的Listbox,其中每個ListboxItem可以上下拖動/重新排序。Silverlight:確定啓動哪個控件drag'n'drop

每個ListboxItem包含幾個控件(TextBlocks,TextBoxes和Buttons),我的問題是,當我點擊一個ListboxItem中的按鈕時,我偶爾會啓動一個拖動事件,而不是該控件上的單擊事件。

一個解決方案是處理ItemDragStarting事件,並確定點擊什麼來啓動事件 - 以及如果由Button調用則取消該事件。

我可以不知道如何確定我點擊了什麼。事件和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

非常感謝您的回答:)我發現我的大部分問題都涉及到使用VM做開發,這導致我的鼠標做了奇怪的事情。將保留您的片段供以後使用! – Claus 2010-12-15 11:38:13