如何访问数据对象中保存的对象?
How do I access object held inside of dataobject?
涉及使用 Gong DragDrop WPF NuGet(但即使没有,也可能不会影响拖放操作的典型功能)。
设置:
- 一个处理 ListBox 的 PreviewDrop 事件。
- DataObject 变量。
- 将 e.Data 分配给 DataObject 变量
- 将对象从任意位置拖放到此 ListBox 以触发。
- 调试断点以在 Locals 中查看 DataObject。
我需要得到的东西:
拖入其中的 ListBoxItem 的内容或 TreeViewItem 的页眉(Gong 允许您这样做)或拖放到我的 ListBox 中的整个对象。
我可以物理地看到此 DataObject 在其非 Public 成员中包含删除的对象 -> InnerData -> 非 Public 成员 -> 数据 -> 原始视图 -> 值 - > 结果视图 -> (0) -> (0) -> 数据,但我不知道如何访问它。
我试过的:
用 Google 搜索溢出和代码项目,VB.Net 文档,没有找到关于该问题的任何具体内容(或者可能太模糊)。
我尝试使用反射来获取 InnerData 字段,如下所示:
Dim myElement = GetType(DataObject).GetField("innerData", System.Reflection.BindingFlags.NonPublic).GetValue(e.Data),
但是我得到 System.NullReferenceException: 'Object reference not set to an instance of an object.'.
Dim myInnerData = myData.GetType().GetField("_innerData", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
将获取我的 innerData,但是我丢失了“innerData”的“数据”,导致我仍然无法获取附加到 DataObject 的对象。
解决方案比我想象的要简单得多。 Joe 让我以正确的方式开始解释:
你需要让 DataObject.GetFormats
知道你在做什么,复制 GetFormats
returns 的字符串,像这样:
Dim myElement = myData.GetFormats
对我来说 returns:
像这样将该字符串传递给 GetData
:
Dim myInnerData = myData.GetData("GongSolutions.Wpf.DragDrop")
瞧,你刚刚得到了 DragEventArgs
的对象。
据我所知,这是唯一对这个特定问题有答案的主题。
涉及使用 Gong DragDrop WPF NuGet(但即使没有,也可能不会影响拖放操作的典型功能)。
设置:
- 一个处理 ListBox 的 PreviewDrop 事件。
- DataObject 变量。
- 将 e.Data 分配给 DataObject 变量
- 将对象从任意位置拖放到此 ListBox 以触发。
- 调试断点以在 Locals 中查看 DataObject。
我需要得到的东西:
拖入其中的 ListBoxItem 的内容或 TreeViewItem 的页眉(Gong 允许您这样做)或拖放到我的 ListBox 中的整个对象。
我可以物理地看到此 DataObject 在其非 Public 成员中包含删除的对象 -> InnerData -> 非 Public 成员 -> 数据 -> 原始视图 -> 值 - > 结果视图 -> (0) -> (0) -> 数据,但我不知道如何访问它。
我试过的:
用 Google 搜索溢出和代码项目,VB.Net 文档,没有找到关于该问题的任何具体内容(或者可能太模糊)。
我尝试使用反射来获取 InnerData 字段,如下所示:
Dim myElement = GetType(DataObject).GetField("innerData", System.Reflection.BindingFlags.NonPublic).GetValue(e.Data),
但是我得到 System.NullReferenceException: 'Object reference not set to an instance of an object.'.
Dim myInnerData = myData.GetType().GetField("_innerData", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
将获取我的 innerData,但是我丢失了“innerData”的“数据”,导致我仍然无法获取附加到 DataObject 的对象。
解决方案比我想象的要简单得多。 Joe 让我以正确的方式开始解释:
你需要让 DataObject.GetFormats
知道你在做什么,复制 GetFormats
returns 的字符串,像这样:
Dim myElement = myData.GetFormats
对我来说 returns:
像这样将该字符串传递给 GetData
:
Dim myInnerData = myData.GetData("GongSolutions.Wpf.DragDrop")
瞧,你刚刚得到了 DragEventArgs
的对象。
据我所知,这是唯一对这个特定问题有答案的主题。