如何通过拖放将列表视图项从一个列表移动到另一个列表?UWP C#

Techrex Studios

我在UWP应用程序中有很多列表视图,但我希望能够将一个项目从一个列表视图移动到另一个列表视图。

我知道AllowDrop或CanDragItems属性,尽管我只是不知道该怎么做,但您需要处理一些事件才能使拖放工作。

延谷-MSFT

如果要通过单击“添加”按钮添加ListView控件并在ListView控件之间移动项目,请检查以下代码作为示例。以下代码与官方示例不同,它用于ObservableCollection完成拖放操作。您可以将项目从源ListView项目ListView拖到目标,也可以将项目从原始目标拖到ListView原始源ListView

您可以单击Add两次按钮,然后ListView添加两个包含两个项目按钮您可以将任何项目从任何ListView控件拖到另一个。如果要将拖动的项目保留在源代码ListView管理中,只需注释代码dragCollection.Remove(dragedItem as string);

例如:

private ObservableCollection<string> dragCollection;
private ObservableCollection<string> dropCollection;
private object dragedItem;
private ListView dragListView;
private ListView dropListView;
……

private void AddButton_Click(object sender, RoutedEventArgs e)
{
    ListView listView = new ListView();
    listView.CanDragItems = true;
    listView.CanDrag = true;
    listView.AllowDrop = true;
    listView.ReorderMode = ListViewReorderMode.Enabled;
    listView.CanReorderItems = true;
    listView.ItemsSource = new ObservableCollection<string>() { "item1","item2" };
    listView.DragItemsStarting += ListView_DragItemsStarting;
    //listView.DropCompleted += ListView_DropCompleted;
    listView.DragEnter += ListView_DragEnter;
    listView.Drop += ListView_Drop;
    listView.DragOver += ListView_DragOver;
    listView.BorderBrush = new SolidColorBrush(Colors.Red);
    listView.BorderThickness = new Thickness(1);

    stackPanel.Children.Add(listView);
}

private void ListView_DragOver(object sender, DragEventArgs e)
{
    e.AcceptedOperation = DataPackageOperation.Move;
}

private void ListView_Drop(object sender, DragEventArgs e)
{
    dropListView = sender as ListView;
    if(dropListView!=null)
    {
        dropCollection = dropListView.ItemsSource as ObservableCollection<string>;
        if (dragedItem != null)
        {
            dropCollection.Add(dragedItem as string);
            //If you need to delete the draged item in the source ListView, then use the following code
            dragCollection.Remove(dragedItem as string);
            dragedItem = null;
        }
    }
}

private void ListView_DragEnter(object sender, DragEventArgs e)
{
    e.AcceptedOperation = (e.DataView.Contains(StandardDataFormats.Text) ? DataPackageOperation.Move : DataPackageOperation.None);
}

private void ListView_DropCompleted(UIElement sender, DropCompletedEventArgs args)
{
    var listView = sender as ListView;
    if (listView != null)
    {
        dropListView = listView;
        dropCollection = listView.ItemsSource as ObservableCollection<string>;

        if(dropListView==dragListView)
        {
            return;
        }
    }

}

private void ListView_DragItemsStarting(object sender, DragItemsStartingEventArgs e)
{
    var listView = sender as ListView;
    if(listView!=null)
    {
        dragListView = listView;
        dragCollection = listView.ItemsSource as ObservableCollection<string>;

        if (dropListView == dragListView)
        {
            return;
        }
        if(e.Items.Count==1)
        {
            dragedItem = e.Items[0];
            e.Data.RequestedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Move;
        }
    }
}

有关拖放的更多信息,您可以参考文档(https://docs.microsoft.com/en-us/windows/uwp/design/input/drag-and-drop)。

对代码有任何疑问,请随时与我联系。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C:将元素从一个列表移动到另一个列表

来自分类Dev

将项目从一个列表框移动到另一个列表-C#

来自分类Dev

如何使用C#将一个或多个值从一个列表框移动到另一个列表框

来自分类Dev

UWP - c # 使用 ListView 通过拖放将 json 对象(节点)移动到另一个对象?

来自分类Dev

如何基于通过 C# 中的 lambda 表达式将元组的一项与另一个列表匹配来过滤元组列表?

来自分类Dev

c#在UWP中将数据从一个xaml移动到另一个xaml

来自分类Dev

如何使用 LINQ C# 将几个属性的值从一个列表更改为另一个列表:

来自分类Dev

C#从另一个列表更新列表

来自分类Dev

转换结构化列表c ++将列表从一个类传递到另一个

来自分类Dev

将文件从一个文件夹移动到另一个C#

来自分类Dev

从一页导航列表到另一个Windows Phone C#

来自分类Dev

如何将值从数组放入C#中的另一个列表

来自分类Dev

C#打印另一个类的列表

来自分类Dev

将列表添加到 C# 中的另一个列表

来自分类Dev

如何在C#中使用Linq通过比较另一个列表中的值来过滤列表?

来自分类Dev

在C#中,如何确定一个列表中是否有另一个列表中的任何项?

来自分类Dev

在C#中,如何使用另一个列表的StartsWith()条件过滤列表?

来自分类Dev

如何获取不在另一个列表中的列表元素C#

来自分类Dev

C#将一个列表的值除以另一个列表的值以生成一个新列表

来自分类Dev

C++ 将所有文件从一个目录移动到另一个目录

来自分类Dev

C#用另一个列表/新列表初始化一个列表

来自分类Dev

c#将一个类的列表调用到另一个类中

来自分类Dev

C#如何创建对另一个类的列表的引用?

来自分类Dev

返回基于C#中的另一个列表过滤的列表

来自分类常见问题

从另一个列表中的列表中的对象获取最大值[C#]

来自分类Dev

C#合并列表与另一个基于键的列表

来自分类Dev

基于C#中另一个浮动列表的排序列表

来自分类Dev

使用LINQ C#合并另一个列表中的列表

来自分类Dev

从另一个列表中的列表中的对象获取最大值[C#]

Related 相关文章

  1. 1

    C:将元素从一个列表移动到另一个列表

  2. 2

    将项目从一个列表框移动到另一个列表-C#

  3. 3

    如何使用C#将一个或多个值从一个列表框移动到另一个列表框

  4. 4

    UWP - c # 使用 ListView 通过拖放将 json 对象(节点)移动到另一个对象?

  5. 5

    如何基于通过 C# 中的 lambda 表达式将元组的一项与另一个列表匹配来过滤元组列表?

  6. 6

    c#在UWP中将数据从一个xaml移动到另一个xaml

  7. 7

    如何使用 LINQ C# 将几个属性的值从一个列表更改为另一个列表:

  8. 8

    C#从另一个列表更新列表

  9. 9

    转换结构化列表c ++将列表从一个类传递到另一个

  10. 10

    将文件从一个文件夹移动到另一个C#

  11. 11

    从一页导航列表到另一个Windows Phone C#

  12. 12

    如何将值从数组放入C#中的另一个列表

  13. 13

    C#打印另一个类的列表

  14. 14

    将列表添加到 C# 中的另一个列表

  15. 15

    如何在C#中使用Linq通过比较另一个列表中的值来过滤列表?

  16. 16

    在C#中,如何确定一个列表中是否有另一个列表中的任何项?

  17. 17

    在C#中,如何使用另一个列表的StartsWith()条件过滤列表?

  18. 18

    如何获取不在另一个列表中的列表元素C#

  19. 19

    C#将一个列表的值除以另一个列表的值以生成一个新列表

  20. 20

    C++ 将所有文件从一个目录移动到另一个目录

  21. 21

    C#用另一个列表/新列表初始化一个列表

  22. 22

    c#将一个类的列表调用到另一个类中

  23. 23

    C#如何创建对另一个类的列表的引用?

  24. 24

    返回基于C#中的另一个列表过滤的列表

  25. 25

    从另一个列表中的列表中的对象获取最大值[C#]

  26. 26

    C#合并列表与另一个基于键的列表

  27. 27

    基于C#中另一个浮动列表的排序列表

  28. 28

    使用LINQ C#合并另一个列表中的列表

  29. 29

    从另一个列表中的列表中的对象获取最大值[C#]

热门标签

归档