使用Silverlight 4 Toolkit的拖放功能,我启用了一个拖动列表框,可以上下拖动/重新排序每个ListboxItem。
每个ListboxItem包含几个控件(TextBlocks,TextBoxes和Buttons),我的问题是当我单击ListboxItem中的按钮时,我偶尔会发起一个拖动事件,而不仅仅是该控件上的click事件。
一种解决方案是处理ItemDragStarting事件并确定点击的内容以启动事件 - 并在Button调用时取消事件。
但我无法弄清楚如何确定我点击的内容。事件的发件人和e.DragSource的类型为ListBoxDragDropTarget,无论是从按钮还是ListboxItem本身启动拖动。
任何帮助将不胜感激 - 解决我的问题或做我需要的替代方法!
答案 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());
}
}
}