UWP 拖放自定义类型/类

fre*_*aso 4 c# drag-and-drop win-universal-app

你好,我正在尝试在 2 个 GridView 之间启用拖放功能,我设法使用“DataPackage”类的自定义类型(SetText、SetBitmap 等)来做到这一点,但我不知道该怎么做这是一个自定义类/类型。两个 GridView 都将数据绑定到同一个自定义类(只有几个属性,int、string、bitmapimage),我只是想直接将此数据项从一个 GridView 拖动到另一个。非常感谢您的帮助!

Arw*_*win 5

因此,为了其他人的利益进行总结,我将这些添加到 DataTemplate 内容的事件处理程序中,因为我只希望某种 (ViewModel) 类型的项目可拖动。

    private void Grid_Drop(object sender, DragEventArgs e)
    {
        if (sender is FrameworkElement)
        {
            var fe = sender as FrameworkElement;
            var targetIvm = fe.DataContext as ItemViewModel;
            object obj = null;
            if(e.DataView.Properties.TryGetValue("ItemViewModel", out obj))
            {
                var sourceIvm = obj as ItemViewModel;
                vm.MoveItem(sourceIvm, targetIvm);
            }
        }
    }

    private void Grid_DragStarting(Windows.UI.Xaml.UIElement sender, DragStartingEventArgs args)
    {
        if (sender is FrameworkElement)
        {
            var fe = sender as FrameworkElement;
            var item = new KeyValuePair<string, object>("ItemViewModel", fe.DataContext);
            args.Data.RequestedOperation = DataPackageOperation.Move;
            args.Data.Properties.Add("ItemViewModel", fe.DataContext);
        }
    }
Run Code Online (Sandbox Code Playgroud)