Какие различные методы перетаскивают объекты вокруг без использования горизонтального или вертикального выравнивания, установленного влево и сверху

StackOverflow https://stackoverflow.com/questions/4339547

Вопрос

Я разрабатываю приложение приборной панели, где я хотел бы, чтобы пользователь мог изменить размер, и переместить виджеты своих диаграмм, где они пожалуйста. У меня были проблемы с возможностью перемещения и изменений и изменений в то же время. Причина, почему, когда выравнивание графика установлено следующее:

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top