为什么Trigger在后面的代码中为空(Silverlight)?

时间:2010-04-14 04:18:46

标签: silverlight triggers

我在xaml中创建了一个触发器,它工作正常。但是,当我想在其后面的代码中访问其中一个属性时,它总是给我一个空值。

任何人都知道为什么?

1 个答案:

答案 0 :(得分: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;