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报表系统是目前最流行的报表设计,开发以及生成工 ...
最新文章
- msys2 安装注意事项
- 中文分词最佳记录刷新了,两大模型分别解决中文分词及词性标注问题丨已开源...
- 利用IShellExecuteHook接口对程序监控
- Docker数据卷(Volume)
- 英特尔Nehalem微架构三级缓存原理学习
- MySQL入门-3:安装与客户端工具
- 基于mysql数据库的应用_MySQL数据库应用
- go返回多个值和python返回多个值对比
- 【小技巧】【堆】【优先队列】优先队列初始化
- hello nodejs
- (四)Raspberry Pi上的人工智能人脸检测
- 0004-程序流程2之ui-router大意
- JSP基础之九九乘法表(利用JSP脚本段制作一张九九乘法表)
- 嵌入式 Linux 入门(一、Linux 基本介绍及文件结构)
- 固定资产管理系统怎么选,详细评测为你解答
- 制作ubuntu18.04启动盘 + 安装ubuntu18.04
- Shopee聊聊客服工作日常
- hutool 解读(三)—— IO流
- python+selenium自动化软件测试(第3章):unittest
- 零工经济爆发:蓝鸟云破而后立,BOSS直聘稳步推进
热门文章
- sv队列和动态数组的区别_systemverilog学习(4)动态数组
- win7卡在正在启动windows界面_win7如何重装ie8
- auto-sklearn详解
- java单链表节点翻转_单链表Java实现
- excel修改列名_听说你还在手动合并Excel,看看这个吧!?
- java 错误日期转正确日期_Java日期格式转换-错误的月份
- 风险管理6个过程及相关重点
- 笔记整理-知识产权与标准化知识-GB/T11457-2006软件工程术语
- 笔记-项目质量管理-复习要点
- 从虚拟化到云原生——容器技术的发展史