Silverlight 4 新特性之Silverlight as Drop Target

Silverlight 4 新特性之Silverlight as Drop Target,第1张

概述在上次项目中写过多篇关于拖拽的实现. 这些拖拽都是控件之间的效果. Silverlight 4 中我们甚至可以直接把文件系统中文件拖拽到Silverlight Application中承载. 这就是 silverlight 4中新特性Silverlight As Drop Target 支持这一点. 为了达到演示目的. 使用桌面图片拖拽到Silverlight Application中Scroll

在上次项目中写过多篇关于拖拽的实现. 这些拖拽都是控件之间的效果. 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.

总结

以上是内存溢出为你收集整理的Silverlight 4 新特性之Silverlight as Drop Target全部内容,希望文章能够帮你解决Silverlight 4 新特性之Silverlight as Drop Target所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1029220.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存