- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我真的很难在 Silverlight 4 中获得一个简单的拖放示例。
这是我所拥有的:
XAML
<UserControl x:Class="TestDragDrop.MainPage" Width="350" Height="200"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid Background="White">
<Rectangle Margin="50,50,200,50" Fill="Orange" MouseLeftButtonDown="r1_MouseLeftButtonDown" />
<Rectangle Margin="200,50,50,50" Fill="Orange" AllowDrop="true" Drop="r2_Drop" />
</Grid>
</UserControl>
代码隐藏
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void r1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
DragDrop.DoDragDrop((Rectangle)sender, "test data", DragDropEffects.All, DragDropKeyStates.LeftMouseButton);
}
private void r2_Drop(object sender, System.Windows.DragEventArgs e)
{
MessageBox.Show("Drop: " + e.Data.ToString());
}
}
DragDrop.DragDropCompleted
事件确实会触发,但发送者参数始终为 null,并且事件参数并不能真正帮助我找到有关该事件的更多信息。
我还尝试使用自定义控件实现 IAcceptDrop,但没有成功。
此外,当我开始拖动操作时,我没有任何视觉反馈表明发生了某些事情(光标或任何东西都没有变化)。有什么问题吗?
我发现的所有示例都使用 DragDropTargets。是我为要使用的特定类型的控件实现 DragDropTarget 的唯一方法吗?
最佳答案
Silverlight 4 的拖放功能针对单一场景:将文件从计算机拖到 Silverlight 应用程序上。除此之外,您还需要使用 Toolkit 的 DragDropTarget 控件。 Tim Heuer 对拖放功能的描述: http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx
For some scenarios, you may have wanted to be able to drag a file from your desktop or file explorer on to your Silverlight application. By enabling the AllowDrop attribute on UIElement in this release, you can now accommodate those scenarios.
换句话说,他们并不打算让您能够在代码中实际创建自己的拖动操作。
此 URL 中的大多数(如果不是全部)“限制”部分仍然适用于 SL4 RTW: http://www.ningzhang.org/2009/11/28/silverlight-drag-and-drop-api/
- there is no drop source support (QueryContinueDrag & GiveFeedback).
- there is no DragDropEffects or DragDropKeyStates in DragEventArgs.
- there is no visual for the dragged object or DragDropEffects.
- only file drag and drop is supported: all drop target events fire only when files are being dragged and dropped. IDataObject, DataObject and DragEventArgs.Data support only one format: “FileDrop”, and the data is of type FileInfo[].
- most of IDataObject methods throw NotImplementedException.
关于Silverlight DragDrop.DoDragDrop(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868921/
我有一个可以在我的窗体周围拖动的 UserControl。当控件被意外拖离我的表单并进入桌面时,我得到了第一次机会异常(例如): A first chance exception of type 'S
我真的很难在 Silverlight 4 中获得一个简单的拖放示例。 这是我所拥有的: XAML 代码隐藏 public partial c
在 WPF 中,我想使用右键单击来启动拖放。类似于 Windows 资源管理器,右键单击,稍微移动,你会得到装饰器来指示操作中的拖放。不要移动,松开按钮时会出现上下文菜单。 我已经启动了这一切,但是当
WPF DragDrop.DoDragDrop方法有 DragSource作为它的第一个参数。 有没有办法获得这个DragSource OnDrop 中的对象或其他拖放事件? 最佳答案 简短的回答是否
我已经为此苦苦挣扎了一段时间 我的应用程序包含一个 ListView ,填充了位于服务器上的文件名。 我正在尝试实现拖放功能,以便用户可以将文件从我的应用程序拖到他/她的本地计算机中。 为此,我首先将
我想知道在 Windows 窗体应用程序中调用 DoDragDrop 方法的控件是否有任何区别。 我有一个带有两个 PictureBox 控件的窗体。一个可以拖动,另一个的 AllowsDrop 属性
在类库中的定义为: 复制代码代码如下: [UIPermissionAttribute(SecurityAction.Demand, Clipboard = UIPermission
我正在将我的应用程序实现为拖动源。当我调用 DoDragDrop(Win32 调用,而不是 MFC)时,它进入模式循环,并且在 DoDragDrop 返回之前我不会在主窗口中收到重绘消息。不幸的是,如
我使用 DragDrop.DoDragDrop 将文件从我的 C# WPF 应用程序复制到 Windows 资源管理器。但是,文件的实际复制导致我的 WPF 应用程序卡住,直到复制完成。此复制操作可能
通过 DragDrop.DoDragDrop(...) 开始拖放操作后,不再触发 MouseMove 事件。我什至尝试过 AddHandler(Window.MouseMoveEvent, new M
我正在像这样拖放外部应用程序: string[] files = new string[/* */]; // get files DataObject o = new DataObject(DataF
我已经扩展了 Canvas {System.Windows.Controls} 和可拖动到 Canvas 中的项目。在拖动过程中,我有 OnDragOver 事件,当用户单击并按住鼠标中键时,我会在其
我有一个 WPF 应用程序,当拖动操作开始时,它在某些计算机上崩溃并出现 AccessViolationException。 困难在于它只发生在我们构建服务器的构建上,当我在 Visual Studi
在我的 WPF 应用程序中,我实现了拖放并将我的 PNG 图像放在 DataObject 中,然后将其传递给 DoDragDrop 方法。关于我可以放弃哪些应用程序,这似乎是偶然的。 Excel ye
我目前正在开发一个带有 MapPoint-Control 的应用程序,这让我很难过。从 mappoint 也使用的线程启动 DoDragDrop 后,我总是在几秒后收到来自 mappoint 的对话框
我的应用程序有一个简单的功能,它连接到 Excel 并在它们之间进行拖放操作。具体来说,我只是从我的应用程序中获取一些文本值,将它们拖到 Excel 中,然后放下。 这在 90% 的时间都有效,但奇怪
我是一名优秀的程序员,十分优秀!