Ric*_*ire 6 wpf drag-and-drop mvvm pixelsense
我正在尝试在使用MVVM模式构建的Surface应用程序中实现拖放功能.我在努力想出一种在坚持MVVM模式的同时实现这一目标的方法.虽然我试图在Surface应用程序中执行此操作,但我认为该解决方案通用性足以应用于WPF.
我正在尝试生成以下功能:
整体交互非常类似于Surface SDK中提供的ShoppingCart应用程序,除了源对象包含在ScatterView而不是ListBox中.
我不确定如何继续以便在我的ViewModel之间进行正确的通信以提供此功能.我遇到的主要问题是当用户联系FrameworkElement时复制ScatterViewItem.
小智 4
您可以使用附加属性。创建一个附加属性并在 setproperty 方法中绑定到 droped 事件:
public static void SetDropCommand(ListView source, ICommand command)
{
source.Drop += (sender, args) =>
{
var data = args.Data.GetData("FileDrop");
command.Execute(data);
};
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以将视图模型中的命令绑定到视图上的相关控件。显然,您可能希望将附加属性应用于特定的控件类型而不是列表视图。
希望有帮助。