打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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中是全屏,这里只是图片的一部。

参考

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
QML基础
ListView(一)
VisualTreeHelper
使用用户控件实现主从表场景
silverlight教程(6)——使用用户管制,以落实主/详细情况
delphi中当月第一天最后一天的函数等函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服