繁体   English   中英

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

[英]Silverlight: Determine which control initiated drag'n'drop

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

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

一种解决方案是处理ItemDragStarting事件并确定单击了什么来启动该事件-如果被Button调用,则取消该事件。

但是,我不知道如何确定我所单击的内容。 事件的发件人和e.DragSource的类型为ListBoxDragDropTarget,无论我是启动按钮的拖动还是ListboxItem本身。

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

您可以使用以下方法向下钻取对象类型:

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());
                }

            }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM