Ejemplo n.º 1
0
        private async Task HandleDropAsync(DragEventArgs e)
        {
            // thanks to https://stackoverflow.com/a/21707156/2023653

            var files = (string[])e.Data.GetData(DataFormats.FileDrop);

            var resolvedFiles = ResolveFileList(files).ToArray();

            //string basePath = resolvedFiles.First()

            DropStarted?.Invoke(resolvedFiles);

            int done            = 0;
            var percentComplete = 0d;

            foreach (var file in resolvedFiles)
            {
                done++;
                percentComplete = done / (double)resolvedFiles.Length;
                try
                {
                    var item = await FileHandling?.Invoke(new FileHandlingEventArgs(file, "oops", percentComplete));

                    if (item != null)
                    {
                        ListView.Items.Add(item);
                    }
                }
                catch
                {
                }
            }

            DropCompleted?.Invoke(this, new EventArgs());
        }
Ejemplo n.º 2
0
        public void SendDropCompleted(DropCompletedEventArgs args)
        {
            if (!_isDragActive)
            {
                // this is mainly relevant for Android
                // Android fires an Ended action on every single view that has a drop handler
                // but we only need one of those DropCompleted actions to make it through
                return;
            }

            _isDragActive = false;
            _             = args ?? throw new ArgumentNullException(nameof(args));

            DropCompletedCommand?.Execute(DropCompletedCommandParameter);
            DropCompleted?.Invoke(this, args);
        }