Style itemContainerStyle = new Style(typeof(ListBoxItem)); itemContainerStyle.Setters.Add(new Setter(ListBoxItem.AllowDropProperty, true)); itemContainerStyle.Setters.Add(new EventSetter(ListBoxItem.PreviewMouseLeftButtonDownEvent, new MouseButtonEventHandler(s_PreviewMouseLeftButtonDown))); itemContainerStyle.Setters.Add(new EventSetter(ListBoxItem.DropEvent, new DragEventHandler(listbox1_Drop))); listbox1.ItemContainerStyle = itemContainerStyle;
<Window.Resources>
    <Style x:Key="ListBoxDragDrop" TargetType="{x:Type ListBoxItem}">
        <Setter Property="AllowDrop" Value="true"/>
        <EventSetter Event="PreviewMouseMove" Handler="s_PreviewMouseMoveEvent"/>
        <EventSetter Event="Drop" Handler="listbox1_Drop"/>
    </Style>
</Window.Resources>
    <ListBox x:Name="listbox1" ItemContainerStyle="{StaticResource ListBoxDragDrop}" HorizontalAlignment="Left" Height="299" Margin="10,10,0,0" VerticalAlignment="Top" Width="224"/>
</Grid>
This is mouse-handler placed in the code-behind of the XAML.
void s_PreviewMouseMoveEvent(object sender, MouseEventArgs e)
    if (sender is ListBoxItem && e.LeftButton == MouseButtonState.Pressed)
        ListBoxItem draggedItem = sender as ListBoxItem;
        DragDrop.DoDragDrop(draggedItem, draggedItem.DataContext, DragDropEffects.Move);
        draggedItem.IsSelected = true;

http://www.codeproject.com/Articles/43614/Drag-and-Drop-in-WPF
http://www.codeproject.com/Articles/22855/ListBox-Drag-Drop-using-Attached-Properties

https://stackoverflow.com/questions/3350187/wpf-c-rearrange-items-in-listbox-via-drag-and-drop?spm=a2c4e.10696291.0.0.263419a4BQWsnz

整理了两个关于WPF拖拽ListBox中的Item的功能。项目地址 https://github.com/Guxin233/WPF-DragItemInListBox 需求一: 两个ListBox拖拽其中一个ListBoxItem,放置到另一个ListBox中。参考 http://www.c-sharpcorner.com/uploadfile/dpatra/drag-and-drop-it... 两种方式,都需要有一个共同的值或方式来记录滑动的距离和方向。否则通过一种方式滑动以后,再用另外一种方式,就会出现错误的距离滑动。 滑动的距离不容易获取,因为ListBox没有类似于... private void lstRead_MouseDown(object sender, MouseEventArgs e) if (this.lstRead.SelectedItem == null) return; //开始拖放操作,Dr 自己写了一个DragDropHelper类,用来快速的为控件添加拖放操作,下面是具体使用介绍:<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.mi Listview和Listbox差不多,这里拿Listview举例。 熟悉wpf的人都知道listview里面包含着一个Scrollviewer,想要实现效果最大的难点在于如何获取Listview里的Scrollviewer。 废话不多说, 第一步,为Listview里的Scrollviewer绑定ScrollChanged的方法,程序初始化运行时会触发这个方法,通过下面代码我们就可以获... 原因:因为当点击的时候SelectedIndex 会被设置为该 Item 的 Index,第二次点击的时候SelectedIndex的值没有变。所以没有触发事件。 解决:只需要在 SelectionChanged 事件处理方法中将 ListBox.SelectedIndex 设置为 -1,即没有选中任何 Item的状态。 private void listBox_Selectio... 介绍 (Introduction) 如果您像我发现没有TListview时那样对FireMonkey感到沮丧,请举手。 我在几乎所有已编写的应用程序中都使用了TListView,并且我not going to compromise by resorting to TStringGrid. By the 4th update to Delphi XE2 an... 因为最近WPF项目中有对ListBox的使用,需要做到像Android平台的RecyclerView的上拉加载,以及Item点击响应。当然一下源码以及实现方式,不是我原创,是结合网上同道们的思路以及实现方式做出来,适应我个人项目的方案。(至于下拉刷新,个人还没做,但是大致思路跟这个上拉加载差不多)一,ListBox的上拉加载我们需要对ListBox控件内部的Scrollviewer进行状态监听,判...