Я хочу создать объект WPF Thumb внутри обработчика события MouseDown. Пока пользователь удерживает мышь, они должны иметь возможность перетаскивать объект Thumb. Однако событие мыши не перенаправляется на мой новый объект Thumb. На самом деле, я сомневаюсь, что объект действительно создан до того, как текущий исполняемый поток имеет отсрочку. Как я могу запустить Thumb в режиме перетаскивания? Если я отправлю код по приоритету ввода, что я могу сделать, чтобы программно начать операцию перетаскивания на объект Thumb?создать большой палец в MouseDown и перетащить его?
ответ
Из-за недостатка кода Я предполагаю, что вы действительно имеете в виду «Создание объекта WPF Thumb внутри обработчика события MouseDown». Достаточно ли ниже?
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Canvas Name="RootCanvas" Background="White"/>
</Window>
public MainWindow()
{
InitializeComponent();
RootCanvas.MouseDown += (s, e) =>
{
Thumb thumb = new Thumb();
thumb.Width = thumb.Height = 35;
thumb.Background = new SolidColorBrush(Colors.Red);
Canvas.SetLeft(thumb, e.GetPosition((Canvas)s).X - thumb.Width/2);
Canvas.SetTop(thumb, e.GetPosition((Canvas)s).Y - thumb.Height/2);
thumb.DragDelta += (d, r) =>
{
Canvas.SetLeft((UIElement)d, Canvas.GetLeft((UIElement)d) + r.HorizontalChange);
Canvas.SetTop((UIElement)d, Canvas.GetTop((UIElement)d) + r.VerticalChange);
};
((Canvas)s).Children.Add(thumb);
Dispatcher.BeginInvoke(DispatcherPriority.Input, new Action(() => thumb.RaiseEvent(e)));
};
}
[EDIT]
Это 'почти' работает пример. По какой-то причине после первых thumb.DragDelta
значения r.HorizontalChange
и r.VerticalChange
не являются дельтами мыши, а мышь delta минус текущее положение большого пальца, что имеет чистый эффект размещения большого пальца на (0,0) иш.
[EDIT2]
Обновлено для работы.
Я ценю вас, отправляя пример кода. Однако сложной задачей, которую я ищу, является возможность перетащить объект Thumb без повторного нажатия. – Brannon
Обновленный ответ с «почти» рабочим примером :) – StaWho
Невозможно добавить текущее местоположение положения большого пальца в «r.HorizontalChange» и «r.VerticalChange» в первый раз, чтобы получить фактический 'большой палец. DragDelta'? – Stefan
- 1. Создать большой палец в Yii2
- 2. Как отключить перетащить большой палец на ScrollBar в WPF?
- 3. Загрузить изображение, создать его большой палец, затем сохранить
- 4. палец перетащить на ваших днищ
- 5. Custom SeekBar установить большой палец и progressDrawable
- 6. Родные компоненты, armeabi-v7a и большой палец?
- 7. Используя большой палец, чтобы переместить элемент
- 8. Customizing прогресс бар: бар и большой палец
- 9. UISlider, большой палец не двигаться
- 10. Искатель для Android - большой палец невидим после установки его drawable
- 11. Почему большой палец прокрутки перемещается в исходное положение, оставляя большой палец после перетаскивания?
- 12. Активный большой палец в галерее изображений
- 13. Случайно освежающий большой палец в android ListView
- 14. Невозможно установить маленький большой палец в HorizontalScrollView
- 15. Создать большой файл и отправить его
- 16. Как показать большой палец изображения? где изображение хранить в БД и большой палец находится магазин в папке
- 17. HTML входного диапазона скрыть большой палец
- 18. несущая волна: большой палец неправильное количество аргументов
- 19. Custom SeekBar большой палец, показывающий нежелательный фон
- 20. Как стилизовать большой палец слайдера wpf?
- 21. как настроить большой палец строки поиска
- 22. UISlider установить большой палец ясно фон
- 23. Рельсы админ дисплей: большой палец изображение
- 24. Загрузить большой палец без TimThumb - Wordpress
- 25. jQuery обнаруживает текущий большой палец и прокрутку jCarousel соответственно
- 26. Как сохранить большой палец с помощью phpthumb?
- 27. Как взять большой палец впечатление на андроид
- 28. Вспышка: не разрешается использовать один большой палец HSLider
- 29. Angular ui.bootstrap.modal и mousedown
- 30. Как сделать большой палец большого файла изображения в J2ME?
Насколько я знаю превью, они сами обнаруживают операцию перетаскивания, поэтому решение может состоять в том, чтобы держать палец невидимо на месте все время (охватывая всю «перетаскиваемую» клиентскую область) и только для обеспечения визуальной обратной связи когда он перетаскивается. Затем вы можете использовать события перетаскивания большого пальца, чтобы обнаружить это условие. – hbarck