Win 8中WPF listview与listBox的Drag、Drop操作。
基本原理是将listview中的项拖动到listBox中。
界面:
<UserControl x:Class= "DragTitleToWebView.MainPage" 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中是全屏,这里只是图片的一部。
联系客服