Silverlight 4 新特性之Silverlight as Drop Target
在上次项目中写过多篇关于拖拽的实现. 这些拖拽都是控件之间的效果. Silverlight 4 中我们甚至可以直接把文件系统中文件拖拽到Silverlight Application中承载. 这就是 silverlight 4中新特性Silverlight As Drop Target 支持这一点. 为了达到演示目的. 使用桌面图片拖拽到Silverlight Application中ScrollViewer动态显示. 先体验一下[你可以尝试从本地文件系统直接拖拽图片到这个Silverlight Application中看一下效果]:
实现步骤:
<1>: 页面布局
- <StackPanel x:Name="LayoutRoot" Background="White">
- <TextBlock Text=" "></TextBlock>
- <TextBlock Text="Silverlight AS Drop target.-chenkai[10.6.28]" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="16" Foreground="Red" FontFamily="Comic Sans MS" FontWeight="BOld" Height="25" Width="655" />
- <ScrollViewer x:Name="ImagesTarget" Background="White" Height="360" BorderBrush="Red"
- VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" AllowDrop="True">
- <ItemsControl x:Name="ImageList" Height="353">
- <!--定义数据模板 支持格式是Image图片 很重要 不然会包invaid异常 数据模板确实很强大.-->
- <ItemsControl.ItemTemplate>
- <DataTemplate>
- <Image Source="{Binding}" Margin="5" Stretch="UniformToFill" Height="240" />
- </DataTemplate>
- </ItemsControl.ItemTemplate>
- <!--项排序模式Horizontal 居中-->
- <ItemsControl.ItemsPanel>
- <ItemsPanelTemplate>
- <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"/>
- </ItemsPanelTemplate>
- </ItemsControl.ItemsPanel>
- </ItemsControl>
- </ScrollViewer>
- </StackPanel>
<2>:后台实现代码
- //定义存储Image集合.
- ObservableCollection<BitmapImage> _images = new ObservableCollection<BitmapImage>();
- public MainPage()
- {
- InitializeComponent();
- this.Loaded += new RoutedEventHandler(MainPage_Loaded);
- }
- void MainPage_Loaded(object sender, RoutedEventArgs e)
- {
- //如果Image数据则直接加载进来.
- ImageList.ItemsSource = _images;
- ImagesTarget.Drop += new DragEventHandler(ImagesTarget_Drop);
- }
- void ImagesTarget_Drop(object sender, DragEventArgs e)
- {
- //判断拖拽数据是否存在
- if (e.Data == null)
- {
- return;
- }
- else
- {
- //利用Fileinfo 来初始化关于文件系统日常操作io对象 Fileinfo 【】数组 意味支持多张Image同时拖拽Silverlight Application
- IDataObject dataObject = e.Data as IDataObject;
- FileInfo[] files =dataObject.GetData(DataFormats.FileDrop) as FileInfo[];
- foreach (FileInfo file in files)
- {
- try
- {
- using (var stream = file.OpenRead())
- {
- //读取拖拽中图片源.
- var imageSource = new BitmapImage();
- imageSource.SetSource(stream);
- //添加到集合中.
- _images.Add(imageSource);
- }
- }
- catch (Exception)
- {
- MessageBox.Show("Not a suppoted image.");
- }
- }
- }
- }
因为前台ScrollView中DataTemplate中定义格式是Image绑定. 后台数据源用到ObservableCollection<BitmapImage>来封装从拖拽中得到图片数据. 另外一个就是FileInfo,提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象, 既然通过Fileinfo得到FileStream对象 其他操作就是平常IO操作. 而Fileinfo[]数组则是用来支持同时拖拽多个对象.关于Fileinfo 更多详细资料请参见MSDN.
本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/764886
Silverlight 4 新特性之Silverlight as Drop Target相关推荐
- Silverlight 5 新特性
微软Silverlight 团队在12月9日早上低调的发布了Silverlight 第五个版本-Silverlight 5. Silverlight 5 Available is Here 这也可能是 ...
- Silverlight 5 Beta新特性博文索引
在MIX11大会上相对Windows phone 7 令人瞩目期待本年一次重大更新Mango所带来的新特性以及Kinect for Windows SDK在现场大放异彩的Action演示.Silver ...
- Silverlight 5 Beta新特性[5]隐式模板支持
继续更新Silverlight 5 Beta新特性.在Silverlight 5 BEta更新出来新特性中有一些是WPF已经存在的影子.类似前面提到的多窗体[Multiple Window Suppo ...
- 【转】Silverlight 3 Beta 新特性解析(7)- Child Window和Shader Effect篇
前提条件: 阅读本文之前请确认你已经安装了如下软件 Visual Studio 2008 (Express) SP1 Silverlight 3 Tools For Visual Studio Mic ...
- Silverlight 5 Beta 新特性预览
MIX11大会昨天刚刚结束.第二天核心Session包含三个部分:Windows phone 7/Silverlight 5 Beta/Kinect for Windows SDK.在整个全程直播中. ...
- Silverlight 4 Beta开发版带着许多新特性发布
Microsoft在PDC 2009 上宣布,他们已经开始提供Silverlight开发版Beta 了, 这距离上个发布Silverlight 3仅有几个月时间.新版本中有大量新的特性:一套完整的控件 ...
- Silverlight 5 beta新特性探索系列:9.视频快进快退和TextSearch对象对文字项查询
本节讲诉两个新特性:一.在Silverlight 5中可以控制MediaElement对象播放的视频进行快进快退控制.二.在Silverlight 5中的文字项进行搜索查询. 一.对于MediaEle ...
- Silverlight 5 Beta新特性[4]文本缩进控制
持续带来Silverlight 5 Beta新特性的更新.在Silverlight 5 Beta版本对文本的处理能力做了真正的改进.其中从官方Silverlight 5 Beta Futurez中提到 ...
- 微软SQL Server 2012新特性Silverlight报表客户端 - Power View
微软SQL Server 2012是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理.其中Reporting Service报表系统是目前最流行的报表设计,开发以及生成工 ...
最新文章
- 2022-2028年中国钢化玻璃行业市场研究及前瞻分析报告
- linux/centos 解决Tomcat内存溢出,centostomcat
- Git使用学习笔记 (一)
- 编程之美-数组分割方法整理
- 一文带你了解java面向对象的三大特性:继承、封装、多态
- RabbitMQ系列-顺序消费模式和迅速消息发送模式
- MyBatis 关系映射XML配置
- [转] DevExpress 第三方控件汉化的全部代码和使用方法
- 牛客题霸 [ 最小的K个数] C++题解/答案
- xrdp完美实现Windows远程访问Ubuntu 16.04
- 创建Jenkins自动化部署任务
- PHP 命令行?是的,您可以!
- 题解 POJ 2559-SP1805 【HISTOGRA - Largest Rectangle in a Histogram】
- 阿里云全站加速DCDN全面支持WebSocket协议
- hbase 使用lzo_【hbase】Hbase最佳实践
- 概论-组合最优化问题、计算复杂性和启发式算法概念(现代优化计算方法)
- EXCEL快捷键大全(三)(九耶-钛伦特)
- android应用统计获取api,APICloud
- 周鸿袆讲座:互联网软件的微创新和用户体验(转)
- 模拟器连接本地服务器
热门文章
- java 图像处理 空白_使用Java进行图像处理的一些基础操作
- 福建2021高考厦门一中成绩查询,2021年福建厦门各高中中考分数线及录取时间结果查询安排...
- RandomizedSearchCV 和GridSearchCV
- linux源代码解读,【原创】Linux MM 源代码解读 (1)
- 焊接件技术要求怎么写_专硕论文写作要求有高么?具体怎么写?
- 深度学习每层的通道数如何计算_深度学习基础系列(一)| 一文看懂用kersa构建模型的各层含义(掌握输出尺寸和可训练参数数量的计算方法)...
- 将c语言转换成汇编语言的软件,如何把汇编语言转换成C语言
- mysql basedal_spring与MyBatis结合
- django构建网页_通过解决问题的方式学习django,律师如何构建副业
- com.xxl.rpc.util.XxlRpcException: java.lang.IllegalStateException: failed to create a child event lo