Silverlight 4.0 在Silverlight 4中,使用CTRL键选择要从一个数据网格拖放到另一个数据网格的多行

Silverlight 4.0 在Silverlight 4中,使用CTRL键选择要从一个数据网格拖放到另一个数据网格的多行,silverlight-4.0,Silverlight 4.0,我已经在silverlight版本4.0.60531.0中开发了silverlight应用程序。在一个页面中,我有两个数据网格。我已经为这两个数据网格启用了DataGridDragDropTarget 如果我使用CTRL键选择随机行并拖放,它将不起作用。请让我知道我在下面的xaml中缺少了什么。提前谢谢 在以下两种情况下,它工作正常 一次拖动一行 使用SHIFT键并选择多行,工作正常 xmlns:sdk=”http://schemas.microsoft.com/winfx/2006/xaml/

我已经在silverlight版本4.0.60531.0中开发了silverlight应用程序。在一个页面中,我有两个数据网格。我已经为这两个数据网格启用了DataGridDragDropTarget

如果我使用CTRL键选择随机行并拖放,它将不起作用。请让我知道我在下面的xaml中缺少了什么。提前谢谢

在以下两种情况下,它工作正常

  • 一次拖动一行
  • 使用SHIFT键并选择多行,工作正常
  • xmlns:sdk=”http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
    xmlns:tk=“clr命名空间:System.Windows.Controls;assembly=System.Windows.Controls.Data.Toolkit”
    
    问题不在于使用Ctrl键进行多个选择。如果在拖放操作期间释放Ctrl键,您会发现拖放操作已成功完成。这更多的是在按住Ctrl键的情况下删除项目。显然,这表示您希望复制项目而不是移动它们

    我不知道有任何文档支持我,但我确实在一个内部类(,方法GetDragDropEffects)的文档注释中发现了以下内容:

    //
    ///通过分析键的状态返回允许的效果
    ///按。如果按下控制键,则用户正在请求
    ///抄袭。如果“复制”可用,则效果将仅为“复制”,如果不可用
    ///如果可用,则效果将为“无”。
    /// 
    

    我将属性
    AllowedSourceEffects=“Copy”
    添加到两个DataGridDragDropTargets,然后发现拖放功能完全停止工作。但是,当我将这些属性更改为
    AllowedSourceEffects=“Copy,Move”
    时,我发现拖放再次起作用,包括按住Ctrl键时。但是,即使我按住Ctrl键,项目也会被移动而不是复制。

    通过defualt,拖放时是移动,这就是我想要的。使用上述相同的代码,CTRL键也可以工作。诀窍是当你将项目移动到目的地时,首先释放CTRL键,然后释放鼠标按钮。但SHIFT键的情况并非如此。看起来可以先释放SHIFT键或鼠标按钮。谢谢你,卢克。
        /// <summary>
        /// Returns the allowed effects by analyzing the state of the keys 
        /// pressed.  If the control key is pressed the user is requesting a 
        /// copy. If copy is available the effect will be only copy, if not 
        /// available the effect will be None.
        /// </summary>