gpt4 book ai didi

xamarin - 如何使用 Xamarin 中的 NSDraggingInfo.EnumerateDraggingItems?

转载 作者:行者123 更新时间:2023-12-03 17:18:32 34 4
gpt4 key购买 nike

我正在实现 NSTableView 行拖放。我正在使用这里的示例 Drag & Drop Reorder Rows on NSTableView .

实际上进展得相当顺利,当我在表中拖动一行时,我的数据源方法就会被调用。但是,我在使用 Xamarin 中的 NSDraggingInfo.EnumerateDraggingItems 方法时遇到问题。

示例 Swift 代码是:

info.enumerateDraggingItemsWithOptions([], forView: tableView, classes: [NSPasteboardItem.self], searchOptions: [:]) {
if let str = ($0.0.item as! NSPasteboardItem).stringForType("public.data"), index = Int(str) {
oldIndexes.append(index)
}
}

我遇到的问题是类:[NSPasteboardItem.self]

Xamarin 方法的签名是:

EnumerateDraggingItems(NSDraggingItemEnumerationOptions, NSView, NSPasteboardReading[], NSDictionary, NSDraggingEnumerator)
EnumerateDraggingItems(NSDraggingItemEnumerationOptions, NSView, NSArray, NSDictionary, NSDraggingEnumerator)
EnumerateDraggingItems(NSDraggingItemEnumerationOptions, NSView, IntPtr, NSDictionary, NSDraggingEnumerator)

如何为 classes 参数提供所需的参数?

最佳答案

看来xamarin版本不正确(查看github上的源码https://github.com/xamarin/xamarin-macios/blob/master/src/AppKit/NSDraggingSession.cs):

EnumerateDraggingItems(NSDraggingItemEnumerationOptions, NSView, NSPasteboardReading[], NSDictionary, NSDraggingEnumerator)

因为类参数应该是类定义的数组而不是实例。使用此版本

EnumerateDraggingItems(NSDraggingItemEnumerationOptions, NSView, NSArray, NSDictionary, NSDraggingEnumerator)

类数组可以这样创建:

var classesArray = NSArray.FromIntPtrs(new IntPtr[] {
ObjCRuntime.Class.GetHandle(typeof(NSPasteboardItem))
});

尚未对此进行测试。

关于xamarin - 如何使用 Xamarin 中的 NSDraggingInfo.EnumerateDraggingItems?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59720746/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com