2010-04-14 115 views
1

我已经在xaml中创建了一个触发器,它工作正常。然而,当我想在后面的代码中访问它的一个属性时,它总是给我一个空值。为什么触发器在Silverlight的代码中为空?

任何人都知道为什么?

+0

你在代码中创建,混合,XAML触发?更多的代码会有帮助。 – 2010-04-14 04:40:15

回答

1

听起来就像你在引用类而不是实例化的触发器。

看看这个example。它显示在C#中访问触发器。也许这会让你走向正确的方向。

,应该帮助的代码如下:

System.Windows.Interactivity.Interaction.GetTriggers 

,或者你可以做这样的事情:

var triggers = this.Element.Triggers; 

这里是一个小例子。将EventTrigger添加到名为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> 

然后通过代码访问触发器,您可以执行以下操作。这会让你收集附加到元素的触发器。

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

var triggers = this.TextBoxInvoker.Triggers; 
+0

不知道是否是这种情况... 我在xaml中声明了名为MyTrigger的触发器。 并试图访问它(this.MyTrigger)后InitializeComponent 但它总是空... – 2010-04-14 05:21:03

+0

非常感谢你贾森!这工作! – 2010-04-14 23:33:12

相关问题