Формы перетаскивания на холсте

Я поместил несколько форм (как Ellipse и Rectangle) на a Canvas. Теперь, я хочу, чтобы пользователь смог к перетаскиванию эти формы. Разве существует ли некоторая предопределенная функциональность, которую я могу использовать, или я должен реализовать перетаскивание сам с помощью событий от нажатия мыши?

Спасибо!

5
задан Dave Clemmer 12 September 2011 в 16:58
поделиться

2 ответа

Обработка событий мыши и реализация перетаскивания, безусловно, сработает, но в зависимости от того, что ты пытаешься сделать, ты, возможно, сможешь использовать поведение Expression Blend. Microsoft.Expression.Interactions DLL включает в себя некоторые полезные базовые модели поведения, триггеры, и действия, которые будут использоваться в Silverlight и WPF.

Существует MouseDragElementBehavior, реализующий базовую функциональность перетаскивания элемента, которая должна работать независимо от контейнера компоновки (чтобы вы не были ограничены холстом). Вы можете бросить это поведение на элемент, используя Blend, или определить его непосредственно в XAML, если хотите:

<Rectangle Fill="Red" Stroke="Black" HorizontalAlignment="Left" Width="100" Height="100">
    <i:Interaction.Behaviors>
        <il:MouseDragElementBehavior/>
    </i:Interaction.Behaviors>
</Rectangle>

Ваш проект должен будет ссылаться на System.Windows.Interactivity.dll и Microsoft.Expression.Interactions.dll, чтобы использовать это поведение.

EDIT (чтобы показать прикрепление этого поведения в C# коде позади):

Rectangle rect = new Rectangle();
rect.Fill = new SolidColorBrush(Colors.Red);
rect.Width = 100;
rect.Height = 100;

MouseDragElementBehavior dragBehavior = new MouseDragElementBehavior();
dragBehavior.Attach(rect);

Не забудьте включить пространство имен Microsoft.Expression.Interactivity.Layout namespace с вашими операторами использования.

.
5
ответ дан 15 December 2019 в 01:03
поделиться

Думаю, вам нужно будет сделать это самому, используя события мыши и визуальное дерево. Вот статья, которая, на мой взгляд, поможет - текст ссылки . Если нет, то у меня есть пример кода, который я могу выложить позже вечером.

HTH

.
-1
ответ дан 15 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: