Silverlight:确定哪个控件启动了拖放

时间:2010-07-14 09:32:17

标签: c# silverlight drag-and-drop silverlight-toolkit sender

使用Silverlight 4 Toolkit的拖放功能,我启用了一个拖动列表框,可以上下拖动/重新排序每个ListboxItem。

每个ListboxItem包含几个控件(TextBlocks,TextBoxes和Buttons),我的问题是当我单击ListboxItem中的按钮时,我偶尔会发起一个拖动事件,而不仅仅是该控件上的click事件。

  

一种解决方案是处理ItemDragStarting事件并确定点击的内容以启动事件 - 并在Button调用时取消事件。

     

但我无法弄清楚如何确定我点击的内容。事件的发件人和e.DragSource的类型为ListBoxDragDropTarget,无论是从按钮还是ListboxItem本身启动拖动。

任何帮助将不胜感激 - 解决我的问题或做我需要的替代方法!

1 个答案:

答案 0 :(得分: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());
                }

            }
        }