silverlight silverlight-4.0 behavior eventtrigger attachedbehaviors

silverlight - SL4/MVVM: Manejar evento MouseDragElementBehavior.Dragging con void Foo() en VM



silverlight-4.0 eventtrigger (1)

El problema es que EventTrigger no se conecta a los eventos del Comportamiento. En cambio, se conecta a los eventos del Objeto Asociado del Comportamiento. Aquí está el código fuente relevante:

protected override void OnAttached() { base.OnAttached(); DependencyObject associatedObject = base.AssociatedObject; Behavior behavior = associatedObject as Behavior; FrameworkElement element = associatedObject as FrameworkElement; this.RegisterSourceChanged(); if (behavior != null) { associatedObject = ((IAttachedObject) behavior).AssociatedObject; behavior.AssociatedObjectChanged += new EventHandler(this.OnBehaviorHostChanged); } .... }

Entonces, puede ver que si el objeto asociado del desencadenante es un comportamiento, establece el objeto asociado al objeto asociado del Comportamiento, que es su colección de elementos. La colección de elementos no tiene un evento de arrastre por lo que nunca se dispara nada.

Probablemente pueda obtener los resultados que desea creando otro comportamiento que verifique si el objeto asociado tiene un comportamiento de arrastre y, de ser así, haga que su comportamiento se una al evento de arrastre. Luego llama al método sobre el objeto desde allí.

Estoy tratando de manejar el evento MouseDragElementBehavior.Dragging en un control que tengo. Vea aquí para obtener antecedentes sobre por qué quiero hacer esto.

Estoy teniendo problemas para conectar este evento. Desde el XAML puede ver que he agregado un comportamiento al control del usuario. Luego, intenté agregar un controlador al evento Dragging sobre el comportamiento a través de CallMethodAction EventTrigger.

<i:Interaction.Behaviors> <ei:MouseDragElementBehavior ConstrainToParentBounds="True"> <i:Interaction.Triggers> <i:EventTrigger EventName="Dragging"> <ei:CallMethodAction MethodName="NotifyChildrenYouAreDragging" TargetObject="{Binding}"/> </i:EventTrigger> </i:Interaction.Triggers> </ei:MouseDragElementBehavior> </i:Interaction.Behaviors>

He intentado las siguientes firmas de método sin suerte:

void NotifyChildrenYouAreDragging(){} void NotifyChildrenYouAreDragging(object sender, EventArgs e){} void NotifyChildrenYouAreDragging(object sender, MouseEventArgs e){}

¿Alguien tiene experiencia en usar desencadenadores para manejar eventos en comportamientos adjuntos ?