c# - UWP 拖放自定义类型/类

标签 c# drag-and-drop win-universal-app

你好, 我正在尝试启用 2 个 GridView 之间的拖放,我设法使用“DataPackage”类(SetText、SetBitmap 等)的自定义类型来做到这一点,但我无法弄清楚如何使用自定义类/类型。 两个 GridViews 都数据绑定(bind)到同一个自定义类(只有几个属性,int,string,bitmapimage),我只是想直接将这些数据项从一个 GridView 拖到另一个。 非常感谢您的帮助!

最佳答案

因此为了其他人的利益总结一下,我将这些添加到 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);
        }
    }

关于c# - UWP 拖放自定义类型/类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35681083/

相关文章:

c# - 从文件中读取整数的简单方法

c# - 如何重新包装 Linq 表达式树

c# - Xamarin Forms 可移植 Windows 应用程序无法导航

c# - Google Analytics Embed Api 服务端授权C#

c# 从 ListView 控件中拖放

jquery - HTML5, jQuery,... >> 平滑触摸兼容的拖放/输入范围 slider 解决方案有人吗?

javascript - Firefox 在文本上拖动时触发 dragleave

c# - Visual Studio 2015、Nuget 和 “same key has already been added.”

xaml - 通用 Windows InkCanvas 笔触在 RenderTargetBitmap.RenderAsync 上消失

c# - 为什么 DynamicData 无法在新的 2012 Server 上运行?