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,拖拽其中一个ListBox的Item,放置到另一个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进行状态监听,判...