Что вам нужно, это управление WPF Thumb
. Вот ответ, который вы должны быть в состоянии адаптироваться к вашим целям: Drag and drop an image in WPF
Когда пользователь нажимает на Thumb
и тащит его, он неоднократно выстреливает свое DragDelta
события. Он дает перетаскиваемую управлять TranslateTransform
именем translateTransform
, и в DragDelta
обработчиком он только сбруя на значения изменения в преобразовании-х X
и Y
:
private void MyRootDragDelta(object sender, DragDeltaEventArgs e)
{
translateTransform.X += e.HorizontalChange;
translateTransform.Y += e.VerticalChange;
}
Если вы хотите, чтобы ограничить диапазон движения в пределах некоторых родительский, вы должны использовать Math.Min()
и Math.Max()
и посмотреть на ActualWidth
и ActualHeight
родителя и ребенка (если только не существует разумного способа сделать это в чистом XAML, но я не знаю этого). Вероятно, вы могли бы сделать Canvas.SetLeft(ctl)
и Canvas.SetRight(ctl)
.
FYI, кодирование ui ЧРЕЗВЫЧАЙНЫЙ КОМПЛЕКС. Вы можете оказаться на своей голове за очень короткий промежуток времени. – Will
Да, это возможно и относительно легко сделать, если вы знаете, что делаете. Например, если вы поместите элемент управления в холст, вы можете легко изменить его свойство Canvas.Left' и 'Canvas.Top', чтобы изменить положение элемента управления в Canvas. – Rachel