2011-04-22 12 views
5

Duplicar posibles:
How to add a Blend Behavior in a Style SetterWPF interacción desencadena en un estilo de invocar comandos en Vista Modelo

cuando se utiliza un disparador de interacción en un estilo, que estoy recibiendo el siguiente error, 'desencadenantes no es elemento conectable de tipo estilo'. Cualquier explicación de lo que este error realmente significa y cómo resolverlo.

Como referencia, eche un vistazo al ejemplo de EventToCommand de MVVM Light toolkit.

En este caso particular, estoy usando Timeline control de Infragistics que representa eventos como EventTitle y cuando se hace clic en EventTitle, me gustaría elevar el comando (Tenga en cuenta que Timeline control no define ningún evento como EventTitleClicked). Actualmente puedo lograr la funcionalidad mediante el uso de eventos y llamando a mi método ViewModel desde el código subyacente; en cambio, me gustaría invocar el comando directamente desde xaml.

<Style x:Key="EventTitleTopStyle" TargetType="igTl:EventTitle"> 
    <!-- The following is not working --> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="MouseLeftButtonDown"> 
      <!--<cmd:EventToCommand Command="{Binding MyCommand}" />--> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 

    <!-- Using event setter instead to achieve the same --> 
    <EventSetter Event="MouseLeftButtonDown" Handler="TopTitleMouseLeftButtonDown" /> 
    .... 

Respuesta

2
<interactivity:Interaction.Triggers> 
    <interactivity:EventTrigger EventName="MouseDoubleClick"> 
      <behaviours:ExecuteCommandAction Command="{Binding Path=DataContext.YourCommand, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type UserControl}}}" 
       CommandParameter="{Binding }"/> 
    </interactivity:EventTrigger> 
</interactivity:Interaction.Triggers> 
+0

No trate en el estilo de tratar después de su control que trabajaría :) – TechGiant

+0

Ver mi post anterior he tomado un cuadro de texto y el evento de foco que he perdido enlazar un comando. Realice un comando en el modelo de vista – TechGiant

+0

Se activará el evento de doble clic del mouse y se ejecutará su comando. – TechGiant

-3
<TextBox x:Name="EditableControlTextBox" Loaded="RoomTextBox_Loaded"> 
     <interactivity:Interaction.Triggers> 
       <interactivity:EventTrigger EventName="LostFocus"> 
        <!--<cmd:EventToCommand Command="{Binding MyCommand}" />--> 
       </interactivity:EventTrigger> 
      </interactivity:Interaction.Triggers> 
</TextBox> 
+7

Esto está al lado del punto, el asker quiere hacerlo en un estilo, aplicándolo a un control discreto es trivial. –

Cuestiones relacionadas