将Storagefile从一个列表视图拖放到另一个列表视图

时间:2017-01-25 19:07:44

标签: c# listview drag-and-drop uwp storagefile

我有2个列表视图,我正在尝试将项目从一个拖到另一个。 typeof项是一个存储文件。

private async void ListA_DragItemsStarting(object sender, DragItemsStartingEventArgs e)
    {
        List<IStorageItem> files = new List<IStorageItem>();
        StorageFile file = e.Items;
        files.Add(file);

        e.Data.SetStorageItems(files);
    }
    private void ListC_DragEnter(object sender, DragEventArgs e)
    {
        e.AcceptedOperation = DataPackageOperation.Copy;

    }
    private async void ListC_Drop(object sender, DragEventArgs e)
    {


        //if (e.DataView.Contains(StandardDataFormats.StorageItems))
        //{

        //    var items = await e.DataView.GetStorageItemsAsync();
        //    if (items.Count > 0)
        //    {
        //        var storageFile = items[0] as StorageFile;
        //        ListC.Items.Add(storageFile);
        //    }
        // }

    }

我已经尝试了一切我能想到的将存储文件放到另一个列表视图中并显示显示名称......所有我能够显示的都是类型和内容。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我在几小时后尝试解决它。​​

        private async void ListA_DragItemsStarting(object sender, DragItemsStartingEventArgs e)
    {
        //f.MessageBox(e.Items.First().GetType().ToString());
        try
        {
            List<IStorageItem> files = new List<IStorageItem>();
            StorageFile file = e.Items.First() as StorageFile;
            files.Add(file);
            e.Data.SetStorageItems(files);
            //e.Data.SetData(StandardDataFormats.Text, e.Items.);


        }catch(Exception ex)
        {
            f.MessageBox(ex.Message);
        }

    }
    private async void ListC_DragEnter(object sender, DragEventArgs e)
    {
        e.AcceptedOperation = DataPackageOperation.Copy;
        //IReadOnlyList<IStorageItem> files = await e.DataView.GetStorageItemsAsync();


    }
    private async void ListC_Drop(object sender, DragEventArgs e)
    {
        try
        {
            if (e.DataView.Contains(StandardDataFormats.StorageItems))
            {


                var items = await e.DataView.GetStorageItemsAsync();
                if (items.Count > 0)
                {
                    var storageFile = items[0] as StorageFile;
                    ListC.Items.Add(storageFile.Name);
                }
            }
        }catch
        {
            f.MessageBox("nope");
        }