DataObject.GetDatapresent with subclass

Gia*_*bue 3 c# wpf data-objects

当我DataObject.GetData(typeof(ItemType))从方法的子类的实例调用此方法时ItemType返回null ...如何从子类型获取数据?谢谢

Stu*_*ood 7

DataObject处理不处理类层次结构 - 它是从给定数据类型的全名派生的直字符串'type',因此它没有上下文来为它提供子类的知识.我刚刚遇到了在树视图中实现拖放的完全相同的问题.

我有两个选项(这些可能是拖放特定的 - 如果这不是你的问题,它可能不是很多用途) - 都依赖于改变数据对象的来源(再次,如果你没有访问它,它可能没有多大用处).

  1. 创建一个包含ItemType实例的包装类,并在调用DoDragDrop时传递该包装而不是实际实例.另一方面,测试DataObject.GetData(typeof(WrapperClass))代替.

  2. 同样,在设置数据对象的地方,自己设置一个DataObject实例 - 例如.呼叫

    ctl.DoDragDrop(new DataObject(typeof(ItemType).FullName, itemTypeInstance),
        DragDropEffects.Move|DragDropEffects.Copy)
    
    Run Code Online (Sandbox Code Playgroud)

    然后你可以DataObject.GetData(typeof(ItemType))在另一边使用.