2016-04-21 4 views
-1

Я хотел бы создать пользовательский элемент управления, который можно динамически перемещать при запуске приложения, используя перетаскивание (аналогично различным видам окон на интерфейсе Visual Studio).динамические плавающие пользовательские элементы управления wpf

Может ли такое быть достигнуто или элементы управления будут «заблокированы» после запуска приложения?

+1

FYI, кодирование ui ЧРЕЗВЫЧАЙНЫЙ КОМПЛЕКС. Вы можете оказаться на своей голове за очень короткий промежуток времени. – Will

+0

Да, это возможно и относительно легко сделать, если вы знаете, что делаете. Например, если вы поместите элемент управления в холст, вы можете легко изменить его свойство Canvas.Left' и 'Canvas.Top', чтобы изменить положение элемента управления в Canvas. – Rachel

ответ

0

Что вам нужно, это управление 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).

Смежные вопросы