VisualStateManager似乎不适用于.NET 4.0(wpf)

时间:2011-06-17 14:36:54

标签: .net wpf visualstatemanager

我想要覆盖默认按钮样式,以便只有一个图像按钮,没有边框和所有这些东西。

这一切都很完美,但是虽然我在XAML Style中定义了VisualStateManager,但是无法用鼠标按下按钮。事实上,它什么都不做。

我做错了什么?

<!-- Button Style -->
<Style x:Key="WinImageButton" TargetType="Button">

    <Setter Property="BorderBrush" Value="Transparent"/>
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="Background" Value="Transparent"/>

    <Setter Property="RenderTransform">
        <Setter.Value>
            <TranslateTransform/>
        </Setter.Value>    
    </Setter> 

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <ContentControl x:Name="RootElement">
                    <ContentPresenter 
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center"
                        RecognizesAccessKey="True">
                    </ContentPresenter>

                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup Name="CommonStates">
                            <VisualState Name="Normal" />

                            <VisualState Name="Pressed">
                                <Storyboard>
                                    <DoubleAnimation 
                                        Storyboard.TargetName="RootElement"
                                        Storyboard.TargetProperty="(FrameworkElement.RenderTransform).(TranslateTransform.Y)" 
                                                 To="2.0" />
                                    <DoubleAnimation 
                                        Storyboard.TargetName="RootElement"
                                        Storyboard.TargetProperty="(FrameworkElement.RenderTransform).(TranslateTransform.X)" 
                                                 To="-2.0"  />
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>

                </ContentControl >
            </ControlTemplate>

        </Setter.Value>
    </Setter>
</Style>

1 个答案:

答案 0 :(得分:0)

您是否尝试将TranslateTransition移动到ControlTemplate内部? (您可以将其放在模板的资源部分。)