【问题标题】:Silverlight 4 - How can I change button background color when focused with an Implicit button style?Silverlight 4 - 如何在使用隐式按钮样式聚焦时更改按钮背景颜色?
【发布时间】:2010-10-31 18:06:09
【问题描述】:

我在尝试实现本应微不足道的事情时遇到了很大的困难。我正在使用在全局 XAML 资源文件中定义的隐式按钮样式。我只想使用 ColorAnimation 将 focused button 的背景颜色更改为红色。我在Storyboard.TargetPropertyStoryboard.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>
        ...

【问题讨论】:

    标签: xaml silverlight-4.0 implicit-style


    【解决方案1】:

    因为我没有你的其余样式,所以我用两个边框和一个 ContentPresenter 制作了这个。一旦获得焦点,按钮的背景就会从绿色变为红色。

    <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>
    

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 抱歉,这并没有什么帮助。
      猜你喜欢
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 2021-02-23
      • 2020-11-07
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      相关资源
      最近更新 更多