Я работаю с приложением WPF, использующим функцию перетаскивания.
Операция перетаскивания является блокирующей операцией и имеет некоторые негативные побочные эффекты в моем приложении. Недавно я добавил использование рекламного элемента для отображения перетаскивания элемента. Проблема в том, что для этого мне нужно отслеживать текущее положение мыши. Когда инициируется операция перетаскивания, она блокирует дальнейшее выполнение до тех пор, пока предмет не будет отброшен.
Я прочитал, что исправлением для этого является выполнение перетаскивания в собственном потоке, а затем обновление пользовательского интерфейса. Я читаю эту статью здесь
http://msdn.microsoft.com/en-us/library/ms741870.aspx
Я не уверен, что это то, что я хочу сделать, но это звучит как то, что мне нужно.
Есть ли другое исправление?
Вот код, который мне нужно выполнить.
private void FieldItemGrid_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (_isDown)
{
if ((_isDragging == false))
{
/*Add Adorner to Item that is being dragged*/
DragStarted(e.GetPosition(this));
}
if (_selectedElement != null)
{
/*Begin Drag Operation*/
DragDrop.DoDragDrop(_selectedElement, _selectedElement, DragDropEffects.Move);
}
/*The following code is not executed until the dragged item is released*/
if (_isDragging)
{
/*Update Current Position of Mouse to update adorner position*/
DragMoved(e.GetPosition(this));
}
}
}