代码之家  ›  专栏  ›  技术社区  ›  James

Silverlight 4-使用隐式按钮样式对焦时,如何更改按钮背景色?

  •  4
  • James  · 技术社区  · 14 年前

    我有很多困难试图实现一些应该是微不足道的事情。我使用的是在全局XAML资源文件中定义的隐式按钮样式。我只想改变 用彩色动画变红。我试过很多不同的组合 Storyboard.TargetProperty Storyboard.TargetName

    提前谢谢。

    <Style TargetType="Button" >
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid x:Name="grid" RenderTransformOrigin="0.5,0.5">
                    <Grid.RenderTransform>
                        <TransformGroup>
                            <ScaleTransform/>
                            <SkewTransform/>
                            <RotateTransform/>
                            <TranslateTransform/>
                        </TransformGroup>
                    </Grid.RenderTransform>
                    <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="FocusStates">
                <VisualState x:Name="Focused" >
                    <Storyboard>
                        <ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="Button" From="Green" To="Red" Duration="00:00:01" />
                    </Storyboard>
                </VisualState>
                <VisualState x:Name="Unfocused"/>
                </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
            ...
    
    2 回复  |  直到 14 年前
        1
  •  6
  •   Fredrik Hedblad    14 年前

    因为我没有你其他的风格,我做了这个有两个边框和一个内容演示者。这将在聚焦后使按钮的背景从绿色变为红色。

    <Style TargetType="Button" >
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Grid x:Name="grid" RenderTransformOrigin="0.5,0.5">
                        <Grid.RenderTransform>
                            <TransformGroup>
                                <ScaleTransform/>
                                <SkewTransform/>
                                <RotateTransform/>
                                <TranslateTransform/>
                            </TransformGroup>
                        </Grid.RenderTransform>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="FocusStates">
                                <VisualState x:Name="Focused">
                                    <Storyboard>
                                        <ColorAnimation Storyboard.TargetName="border"
                                                        Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
                                                        From="Green"
                                                        To="Red"
                                                        Duration="0:0:1" />
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Unfocused"/>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Border BorderBrush="Transparent" BorderThickness="1" CornerRadius="4">
                            <Border x:Name="border" Background="White" BorderBrush="Black" BorderThickness="1" CornerRadius="4">
                            </Border>
                        </Border>
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    
    推荐文章