0

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

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

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

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

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

4

1 回答 1

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

            }
        }
于 2010-12-14T22:38:05.067 回答