Какие различные методы перетаскивают объекты вокруг без использования горизонтального или вертикального выравнивания, установленного влево и сверху
Вопрос
Я разрабатываю приложение приборной панели, где я хотел бы, чтобы пользователь мог изменить размер, и переместить виджеты своих диаграмм, где они пожалуйста. У меня были проблемы с возможностью перемещения и изменений и изменений в то же время. Причина, почему, когда выравнивание графика установлено следующее:
chart.HorizontalAlignment = HorizontalAlignment.Left;
chart.VerticalAlignment = VerticalAlignment.Top;
... Переезд будет работать отлично, однако изменение изменений смущется в неопределенных направлениях. Если я переключаю выравнивания к следующему:
chart.HorizontalAlignment = HorizontalAlignment.Stretch;
chart.VerticalAlignment = VerticalAlignment.Stretch;
... Переезд будет выключен, но изменение изменений будет работать прилично.
Код перемещения выглядит следующим образом:
public void chart_MouseMove(object sender, MouseEventArgs e)
{
C1Chart chart = sender as C1Chart;
if (!ModifierKey)
{
if (isMouseCaptured)
{
// Calculate the current position of the object.
double deltaV = e.GetPosition(null).Y - mouseVerticalPosition;
double deltaH = e.GetPosition(null).X - mouseHorizontalPosition;
double newTop = deltaV + (double)chart.Margin.Top;
double newLeft = deltaH + (double)chart.Margin.Left;
// Set new position of object.
chart.Margin = new Thickness(newLeft, newTop, 0, 0);
// Update position global variables.
mouseVerticalPosition = e.GetPosition(null).Y;
mouseHorizontalPosition = e.GetPosition(null).X;
}
}
}
MouseBverticalPosition, MouseHorizontalPosition, IsmouseCapted назначается в диаграмме мышиного события мыши, а Modifierkey - Boolean, чтобы сказать, нажата ли какая-либо из модификаторов клавиатуры, чтобы узнать, следует ли перемещаться. Этот код был снят MSDN, но я открыт для альтернативных решений.
Код изменений можно найти здесь(Пример Microsoft) или здесь(Denis Vuyka Blog). Отказ Вот мой вопрос: Есть ли разный способ сделать перетаскивание или изменение размера (класс Adorner), что я не вижу. Или есть ли способ использовать этот код с помощью взлома выравнивания.
Решение
Вы смотрели в MousedRagelementBehavior?http://blogs.msdn.com/b/dphill/archive/2009/09/25/blend-behaviors.aspx.