使用 ScatterView 在 MVVM 中拖放

2024-02-19

我正在尝试在使用 MVVM 模式构建的 Surface 应用程序中实现拖放功能。我正在努力想出一种方法来实现这一点,同时遵守 MVVM 模式。虽然我尝试在 Surface 应用程序中执行此操作,但我认为该解决方案足够通用,也适用于 WPF。

我正在尝试产生以下功能:

  • 用户联系 ScatterViewItem 中的 FrameworkElement 以开始拖动操作(ScatterViewItem 的特定部分启动拖/放功能)
  • 当拖动操作开始时,将创建该 ScatterViewItem 的副本并将其强加到原始 ScatterViewItem 上,该副本是用户将拖动并最终放下的内容
  • 用户可以将项目拖放到另一个 ScatterView 项目中(放置在单独的 ScatterView 中)

整体交互与 Surface SDK 中提供的 ShoppingCart 应用程序非常相似,只是源对象包含在 ScatterView 而不是 ListBox 中。

我不确定如何继续以实现 ViewModel 之间的正确通信以提供此功能。我遇到的主要问题是当用户联系 FrameworkElement 时复制 ScatterViewItem。


您可以使用附加属性。创建一个附加属性并在 setproperty 方法中绑定到 droped 事件:


public static void SetDropCommand(ListView source, ICommand command)
        {
            source.Drop += (sender, args) =>
                               {
                                   var data = args.Data.GetData("FileDrop");
                                   command.Execute(data);
                               };
        }

然后,您可以将视图模型中的命令绑定到视图上的相关控件。显然,您可能希望将附加属性应用于特定的控件类型而不是列表视图。

希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ScatterView 在 MVVM 中拖放 的相关文章

随机推荐