Xav*_*nas 5 silverlight drag-and-drop silverlight-toolkit silverlight-4.0
我真的很难在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>
Run Code Online (Sandbox Code Playgroud)
代码隐藏
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());
}
}
Run Code Online (Sandbox Code Playgroud)
该DragDrop.DragDropCompleted事件确实触发,但sender参数始终为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
对于某些情况,您可能希望能够将文件从桌面或文件资源管理器拖到Silverlight应用程序上.通过在此版本中启用UIElement上的AllowDrop属性,您现在可以适应这些方案.
换句话说,他们没有计划让您能够在代码中实际创建自己的拖动操作.
此URL中的大多数(如果不是全部)"限制"部分仍适用于SL4 RTW:http://www.ningzhang.org/2009/11/28/silverlight-drag-and-drop-api/
- 没有drop source支持(QueryContinueDrag和GiveFeedback).
- DragEventArgs中没有DragDropEffects或DragDropKeyStates.
- 拖动的对象或DragDropEffects没有可视化.
- 仅支持文件拖放:只有在拖放文件时才会触发所有放置目标事件.IDataObject,DataObject和DragEventArgs.Data仅支持一种格式:"FileDrop",数据类型为FileInfo [].
- 大多数IDataObject方法都会抛出NotImplementedException.
| 归档时间: |
|
| 查看次数: |
3624 次 |
| 最近记录: |