示例#1
0
        public override bool PerformDragOperation(NSDraggingInfo sender)
        {
            var result = base.PerformDragOperation(sender);

            if (result)
            {
                var fileNamesXml = sender.DraggingPasteboard.GetStringForType("NSFilenamesPboardType");

                if (fileNamesXml != null)
                {
                    var propertyData = NSData.FromString(fileNamesXml);
                    var format       = NSPropertyListFormat.Xml;
                    var ser          = (NSArray)NSPropertyListSerialization.PropertyListWithData(propertyData, ref format, out var error);

                    if (error == null && ser != null && ser.Count > 0)
                    {
                        var path = NSString.FromHandle(ser.ValueAt(0));

                        DraggingDidEnd?.Invoke(this, path);
                    }
                }
            }

            return(result);
        }
示例#2
0
        /// <exception cref="FailedToParsePlist"></exception>
        public static NSDictionary PayloadToNSDictionary(byte[] payload)
        {
            var plistData = NSData.FromArray(payload);
            var format    = NSPropertyListFormat.Xml;

            NSError error;
            var     ret = (NSDictionary)NSPropertyListSerialization.PropertyListWithData(plistData, ref format, out error);

            if (ret == null)
            {
                throw new FailedToParsePlist();
            }

            return(ret);
        }