Win 8中WPF listview与listBox的Drag、Drop操作

简介:

Win 8中WPF  listview与listBox的Drag、Drop操作。

基本原理是将listview中的项拖动到listBox中。

界面:

<UserControl x:Class= "DragTitleToWebView.MainPage"
     xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:d= "http://schemas.microsoft.com/expression/blend/2008"
     xmlns:mc= "http://schemas.openxmlformats.org/markup-compatibility/2006"
     mc:Ignorable= "d"
     d:DesignHeight= "768"  d:DesignWidth= "1366" >
     
     <Grid x:Name= "LayoutRoot"  Background= "#FF0C0C0C" >
         <Grid.ColumnDefinitions>
             <ColumnDefinition Width= "1*" />
             <ColumnDefinition Width= "5*" />
         </Grid.ColumnDefinitions>
         <ListView Grid.Column= "0"  AllowDrop= "True"  CanDragItems= "True"   CanReorderItems= "True"  DragItemsStarting= "ListView_DragItemsStarting"  >
             <ListView.Resources>
                 <Style TargetType= "Rectangle" >
                     <Setter Property= "Width"  Value= "100" />
                     <Setter Property= "Height"  Value= "100" />
                 </Style>
                 </ListView.Resources>
             <Rectangle Fill= "Orange"   Tag= "Rect1"  Width= "100"  Height= "100" />
             <Rectangle Fill= "Orange"  Tag= "Rect2"  Width= "120"  Height= "120" />
             <Rectangle Fill= "Orange"  Tag= "Rect3"  Width= "140"  Height= "140" />
             <Rectangle Fill= "Orange"  Tag= "Rect4"  Width= "160"  Height= "160" />
         </ListView>
         <ListBox x:Name= "lb"  Grid.Column= "1"  Margin= "10" >
            
         </ListBox>
         <Rectangle  Margin= "10"  x:Name= "droppanel"  Opacity= "0.01"  Visibility= "Collapsed"  Grid.Column= "1"  AllowDrop= "True"  Drop= "droppanel_Drop"  Fill= "Green" />
     </Grid>
     
</UserControl>

 Code:

 

using  Windows.UI.Xaml.Media;
using  Windows.UI.Xaml.Shapes;
partial  class  MainPage
{
     private  bool  flag = false ;
     public  MainPage()
     {
         InitializeComponent();
     }
 
     private  void  ListView_DragItemsStarting( object  sender, DragItemsStartingEventArgs e)
     {
         e.Data.SetText( "t" , (e.Items[0] as  Rectangle).Tag.ToString());
         e.Data.SetText( "width" , (e.Items[0] as  Rectangle).Width.ToString());
         e.Data.SetText( "height" , (e.Items[0] as  Rectangle).Height.ToString());
 
         droppanel.Visibility = Windows.UI.Xaml.Visibility.Visible;
         lb.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
         if  (flag)
         {
             lb.Visibility = Windows.UI.Xaml.Visibility.Visible;
         }
     }
 
     private  void  droppanel_Drop( object  sender, DragEventArgs e)
     {
         string  tag = e.Data.GetText( "t" );
         //如果已经有相同的item,则返回
         foreach  (Rectangle item in  lb.Items)
         {
             if  (item.Tag.ToString() == tag)
             {
                 return ;
             }
         }
         int  width = int .Parse(e.Data.GetText( "width" ));
         int  height = int .Parse(e.Data.GetText( "height" ));
         Rectangle rect = new  Rectangle();
         rect.Tag = tag;
         rect.Height = height;
         rect.Width = width;
         SolidColorBrush b = new  SolidColorBrush(Colors.Orange);
         rect.Fill = b;
 
         lb.Items.Add(rect);
 
         droppanel.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
         lb.Visibility = Windows.UI.Xaml.Visibility.Visible;
 
         flag = true ;
     }
}

如图:Win 8中是全屏,这里只是图片的一部。

参考


本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2012/02/29/2373855.html,如需转载请自行联系原作者

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
8月前
|
数据处理 C# 索引
WPF技术之ListView控件
WPF ListView控件是一个用来显示集合数据的控件,它以表格形式呈现数据,并支持对数据进行排序、筛选和操作。
241 0
|
8月前
|
C# 虚拟化 开发者
WPF技术之ListBox控件
WPF ListBox控件是一种用于显示和选择多个项的常用控件。它可以展示任意类型的数据,并允许用户通过鼠标或键盘进行选择操作
588 0
|
8月前
WPF-样式问题-处理ListBox、ListView子项内容全填充问题
WPF-样式问题-处理ListBox、ListView子项内容全填充问题
112 0
|
8月前
WPF-样式问题-ListBox或ListView中子项全填充去除边线问题
WPF-样式问题-ListBox或ListView中子项全填充去除边线问题
64 0
如何解决WPF中 ScrollViewer 内包含 TreeView 或者 ListBox 等控件时滚轮事件被劫持的问题
如何解决WPF中 ScrollViewer 内包含 TreeView 或者 ListBox 等控件时滚轮事件被劫持的问题
|
C#
C# WPF 中用代码模拟鼠标和键盘的操作
原文:C# WPF 中用代码模拟鼠标和键盘的操作   原文地址   C#开发者都知道,在Winform开发中,SendKeys类提供的方法是很实用的。
2141 0
|
前端开发 C#
【C#/WPF】ListView的MVVM例子,及禁止拖动ListView的头部Header
原文:【C#/WPF】ListView的MVVM例子,及禁止拖动ListView的头部Header 一个ListView的MVVM简单例子: ...
1543 0
|
C# 前端开发
wpf中的datagrid绑定操作按钮是否显示或者隐藏
如图,需要在wpf中的datagrid的操作那列有个确认按钮,然后在某些条件下确认按钮可见,某些情况下不可见的,放在mvc里直接在cshtml页面中if..else就行了。 但是在wpf里不行。。网上搜索了好久才找到解决方法,原来只是binding那个visiable属性就行了,
6845 0
|
C#
WPF ListView 居中显示
原文:WPF ListView 居中显示 今天遇到的问题: 方法1:设置GridViewColumn的ActualWidth ...
1651 0
|
C# C++
WPF - Group分组对ListBox等列表样式的约束
原文:WPF - Group分组对ListBox等列表样式的约束   在做WPF主题支持时,出现一个分组引起的莫名错误,可是折腾了我一番。在没有使用样式时,列表分组很正常,使用了别人写的ListBox列表样式后,发现GroupItem分组区没有内容,是空的,本篇把这一问题的解决过程给大家说一下,做主题时可以注意分组对列表样式的限制了。
1635 0