2010-04-14 5 views
1

J'ai créé un trigger dans le xaml et ça marche bien. Cependant, quand je veux accéder à l'une de ses propriétés dans le code derrière elle me donne toujours une valeur nulle.Pourquoi Trigger est null dans le code derrière (Silverlight)?

Quelqu'un sait pourquoi?

+0

Avez-vous créé le déclencheur dans le code, mélange, XAML? Plus de code aiderait. –

Répondre

1

Vous semblez référencer la classe et non le déclencheur instancié.

Jetez un oeil à ce example. Il montre l'accès à un déclencheur en C#. Peut-être que cela vous mènera dans la bonne direction.

Le code qui devrait aider est la suivante:

System.Windows.Interactivity.Interaction.GetTriggers 

ou vous pouvez faire quelque chose comme ceci:

var triggers = this.Element.Triggers; 

Voici un petit exemple. Où un EventTrigger est ajouté à une zone de texte nommée TextBoxInvoker.

<TextBox x:Name="TextBoxInvoker" Height="33" HorizontalAlignment="Left" VerticalAlignment="Top" Width="123" Text="TextBox" TextWrapping="Wrap"> 
     <interaction:Interaction.Triggers> 
      <interaction:EventTrigger EventName="KeyDown" > 
       <behavior:TextBoxEnterButtonInvoke TargetName="TargetedButton" /> 
      </interaction:EventTrigger> 
     </interaction:Interaction.Triggers> 
    </TextBox> 

Ensuite, pour accéder au déclencheur via le code, vous pouvez procéder comme suit. Cela vous obtiendra la collection de déclencheurs attachés à l'élément.

var triggerCollection = System.Windows.Interactivity.Interaction.GetTriggers(TextBoxInvoker); 

ou

var triggers = this.TextBoxInvoker.Triggers; 
+0

Je ne sais pas si c'est le cas ... J'ai déclaré un déclencheur nommé MyTrigger dans le xaml. Et essayé d'y accéder (this.MyTrigger) après InitializeComponent Mais c'est toujours nul ... –

+0

Merci beaucoup Jason! Cela marche!! –

Questions connexes