按钮模板中的Silverlight触发器?

时间:2010-03-09 22:03:02

标签: silverlight triggers

有没有人有一个如何使用Microsoft.Expression.Interactivity dll在Silverlight按钮模板中使用触发器的功能示例?

我想通过触发动画来响应样式中定义的Button模板中的click事件。

3 个答案:

答案 0 :(得分:2)

您想使用触发EventTrigger

GoToStateAction
<Button x:Name="button" Height="53" HorizontalAlignment="Left" Margin="173,124,0,0" VerticalAlignment="Top" Width="147" Content="Button">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <ic:GoToStateAction TargetName="checkBox" StateName="Checked"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>
<CheckBox x:Name="checkBox" Height="24" HorizontalAlignment="Left" Margin="173,206,0,0" VerticalAlignment="Top" Width="147" Content="CheckBox"/>

要在Blend中执行此操作,您可以将GoToStateAction拖到按钮上,然后将TargetName属性设置为目标UIElement,并将StateName属性设置为所需的状态。

答案 1 :(得分:0)

您可以随时使用VisualStateManager并通过处理Button的click事件更改为“Click”状态。

void myButton_Click(object sender, RoutedEventArgs)
{
     VisualStateManager.GoToState(this, "Click", true);
}

您还需要在XAML代码中定义样式和状态。

<Style x:Key="ButtonStyle" TargetType="Button">       
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="StateGroup">
                               <VisualState x:Name="ActiveLink">
                                    <Storyboard>
                                        //animations go here
                              ...

另外,请记住Button对象有一堆预定义状态,如Disabled,Pressed(Click?),MouseOver和Normal。

答案 2 :(得分:0)

看起来当时不可能。