在画布上拖放形状

5 .net c# wpf graphics drag-and-drop

我把几个形状(比如EllipseRectangle)放在上面Canvas.现在,我希望用户能够拖放这些形状.是否有一些我可以使用的预定义功能,或者我应该使用鼠标事件实现拖放?

谢谢 !

Dan*_*air 5

处理鼠标事件并实现拖放操作肯定会有效,但根据您尝试的操作,您可以利用Expression Blend行为.Microsoft.Expression.Interactions DLL包含一些在Silverlight和WPF中使用的有用的基本行为,触发器和操作.

有一个MouseDragElementBehavior实现了一个元素的基本拖放功能,无论你的布局容器如何,它都应该有效(所以你不会被限制在Canvas中).您可以使用Blend将此行为放到元素上,或者如果您愿意,可以直接在XAML中定义它:

<Rectangle Fill="Red" Stroke="Black" HorizontalAlignment="Left" Width="100" Height="100">
    <i:Interaction.Behaviors>
        <il:MouseDragElementBehavior/>
    </i:Interaction.Behaviors>
</Rectangle>
Run Code Online (Sandbox Code Playgroud)

您的项目必须引用System.Windows.Interactivity.dll和Microsoft.Expression.Interactions.dll才能使用此行为.

编辑(显示在C#代码隐藏中附加此行为):

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

MouseDragElementBehavior dragBehavior = new MouseDragElementBehavior();
dragBehavior.Attach(rect);
Run Code Online (Sandbox Code Playgroud)

请记住在您的using语句中包含Microsoft.Expression.Interactivity.Layout命名空间.


Wad*_*e73 -1

我相信您需要使用鼠标事件和可视化树自己完成此操作。这是一篇我相信会有所帮助的文章 -链接文本。如果没有,我有一些示例代码,我可以在今晚晚些时候发布。

华泰