2010-01-04 13 views
5

Puse varias formas (como Ellipse y Rectangle) en un Canvas. Ahora, quiero que el usuario pueda arrastrar & soltar estas formas. ¿Hay alguna funcionalidad predefinida que pueda usar, o debería implementar la función de arrastrar & soltando los eventos del mouse?Arrastrar y soltar formas en el lienzo

Gracias!

Respuesta

-1

Creo que tendrá que hacer esto usted mismo, usando los eventos del mouse y el árbol visual. Aquí hay un artículo que creo que ayudará - link text. Si no, tengo un código de muestra que puedo publicar más tarde esta noche.

HTH

5

Manejo de los eventos de ratón y la implementación de arrastrar y soltar a sí mismo sin duda trabajar, pero dependiendo de lo que está tratando de hacer que puede ser capaz de aprovechar los comportamientos de Expression Blend. La DLL Microsoft.Expression.Interactions incluye algunos comportamientos básicos, activadores y acciones útiles para ser utilizados en Silverlight y WPF.

Hay un MouseDragElementBehavior que implementa una funcionalidad básica de arrastrar y soltar para un elemento, que debería funcionar independientemente de su contenedor de diseño (para que no esté limitado a un lienzo). Usted puede eliminar este comportamiento en el uso de un elemento de mezcla, o definir directamente en XAML si le gustaría:

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

Su proyecto tendrá que hacer referencia tanto System.Windows.Interactivity.dll y Microsoft.Expression.Interactions. dll para usar este comportamiento.

EDIT (para mostrar adjuntar este comportamiento en C# de código subyacente):

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

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

Recuerde incluir el espacio de nombres Microsoft.Expression.Interactivity.Layout con sus declaraciones utilizando.

+0

Hola, No estoy muy familiarizado con Expression Blend, pero suena interesante. Estoy haciendo algún tipo de programa que permita a los usuarios dibujar problemas geométricos (círculos, triángulos, bisectrices, etc.). Dado que las formas son creadas dinámicamente por el usuario, supongo que necesito configurar MouseDragElementBehavior en C# en lugar de XAML, ¿verdad? ¿Podría proporcionar un código de ejemplo de C# para hacer eso? ¿Cómo debo hacer referencia a System.Windows.Interactivity.dll y Microsoft.Expression.Interactions.dll? Gracias! –

+0

Si no tiene instalado Expression Blend 3, tendrá que descargar e instalar el SDK (gratis) para poder hacer referencia a los archivos DLL. Puede descargarlo aquí: http://www.microsoft.com/downloads/details.aspx?FamilyID=F1AE9A30-4928-411D-970B-E682AB179E17&displaylang=en Una de las cosas buenas de los comportamientos es poder encapsular algunos Código de comportamiento de UI y luego adjúntelo a un elemento declarativamente en XAML. Sin embargo, también es posible instanciar y adjuntar un comportamiento en código subyacente, por lo que editaremos lo anterior para incluir un ejemplo en C#. –

+0

Suena interesante ... descargué "Microsoft Expression Blend 3 SDK" pero cuando comencé a instalarlo, recibí este mensaje: ".Net versión 3.5 o componentes de tiempo de ejecución más nuevos deben instalarse antes de instalar Microsoft Expression Blend 3 SDK. Intente instalar nuevamente después de corregir el problema ". Sin embargo, veo que "Microsoft .Net Framework 3.5" está instalado en mi computadora. ¿No es esto suficiente? –