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,如需转载请自行联系原作者