gpt4 book ai didi

wpf - 使用 ScatterView 在 MVVM 中拖放

转载 作者:行者123 更新时间:2023-12-04 15:05:34 25 4
gpt4 key购买 nike

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

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

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

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

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

    最佳答案

    您可以使用附加属性。创建一个附加属性并在 setproperty 方法中绑定(bind)到删除的事件:


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

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

    希望有帮助。

    关于wpf - 使用 ScatterView 在 MVVM 中拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1034374/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com