как готовить Drag&Drop
От: okon  
Дата: 20.01.19 21:34
Оценка:
Вот в примере от MS например https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/drag-and-drop-overview
очевидна проблема что если зажать кнопку LeftButton вне эллипса и провести по нему мышкой то сработает DoDragDrop, что не является ожидаемым поведением.


private void ellipse_MouseMove(object sender, MouseEventArgs e)
{
    Ellipse ellipse = sender as Ellipse;
    if (ellipse != null && e.LeftButton == MouseButtonState.Pressed)
    {
        DragDrop.DoDragDrop( ellipse,
                             ellipse.Fill.ToString(),
                             DragDropEffects.Copy);
    }
}


Обычно делал предварительно запоминание что был MouseDown и потом уже MouseMove, но тут тоже много ньюансов — можно увести курсор, свернуть приложение и т.д. и все это надо обрабатывать и обновлять стейт.
А есть какие-то более надежные и простые способы добиться адекватного поведения ?
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.