我想在我的应用程序中使用拖放功能,在这里我需要将项目从一个列表框拖到另一个列表框。
我正在使用GongSolution.WPF.DragDrop.dll;组件版本2.1.0
来自[从[在此处输入链接描述] [1]。
为了检查是否使用该库,我添加了两个带有LT1,LT2的列表框。
<ListBox Name="LT1"
ItemTemplate="{StaticResource itemlisttemplate}"
Grid.Column="0"
dd:DragDrop.IsDragSource="True"
dd:DragDrop.IsDropTarget="True"
SelectionMode="Single"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
<ListBox Name="LT2"
ItemTemplate="{StaticResource itemlisttemplate}"
Grid.Column="1"
dd:DragDrop.IsDragSource="True"
dd:DragDrop.IsDropTarget="True"
SelectionMode="Single"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
以及将几个项目添加到Listbox1(LT1)的示例代码,因此我可以尝试将其拖放到Listbox2(LT2)中
System.Object[] ItemObject = new System.Object[10];
for (int i = 0; i <= 3; i++)
{
ItemObject[i] = "Item" + i;
}
LT1.Items.AddRange(ItemObject);
在应用程序启动时,我可以看到将两项添加到listbox1。但是,当我尝试将项目从listbox1复制到listbox2而不是拖动时,它将被复制并移动到listbox2。
请某人指导/建议此处可能存在的问题。
或建议我在任何库中使用拖放功能。
非常感谢。
//when you try to drag the element make sure,
void .....DragEvent1(......)
{
if (listBox1.SelectedItems.Count > 0)
{
//in case unknown error
try
{
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
当我使用列表框集合时。我的视图在集合更改方面没有更新,因此,Listbox1仍然显示已拖动的项目,尽管它已经被拖动了。拖动每个项目后,它仍然显示该项目,并且在尝试拖动该项目时,由于没有要拖动的项目,应用程序崩溃。
在使用带有CollectionChnaged事件处理程序的ObservableCollection实现后解决了问题。
失败的先前代码:
System.Object[] ItemObject = new System.Object[10];
for (int i = 0; i <= 3; i++)
{
ItemObject[i] = "Item" + i;
}
LT1.Items.AddRange(ItemObject);
通过ObservableCollection解决:
private ObservableCollection<TodoItem> items;
public MainWindow()
{
InitializeComponent();
items = new ObservableCollection<TodoItem>()
{
new TodoItem(){TitleText = "Item1"},
new TodoItem(){TitleText = "Item2"},
new TodoItem(){TitleText = "Item3"},
};
lt1.ItemsSource = items;
}
public class TodoItem
{
public string TitleText { get; set; }
}