我在Ellipse
上放了几个形状(如Rectangle
和Canvas
)。
现在,我希望用户能够拖动和放大放下这些形状。
是否有一些我可以使用的预定义功能,或者我应该实现拖动和放大器功能。使用鼠标事件放弃自己?
谢谢!
答案 0 :(得分: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>
您的项目必须引用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);
请记住在您的using语句中包含Microsoft.Expression.Interactivity.Layout命名空间。
答案 1 :(得分:1)
MouseDragElementBehavior类具有
已完成
拖动
事件。我相信订阅这些可以满足您的需求
答案 2 :(得分:-1)
我相信你需要自己动手,使用鼠标事件和可视化树。以下是我认为有用的文章 - link text。如果没有,我有一些示例代码,我可以在今晚晚些时候发布。
HTH