【问题标题】:VisualStateManager seems not to work with .NET 4.0 (wpf)VisualStateManager 似乎不适用于 .NET 4.0 (wpf)
【发布时间】:2011-10-01 11:15:56
【问题描述】:

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

这一切都很好,但是虽然我在我的 XAML 样式中定义了 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>

【问题讨论】:

  • 你说的鼠标不能按下按钮到底是什么意思?这是视觉问题吗?您希望在单击按钮时会发生其他事情,但事实并非如此?
  • 我上面贴的样式是按钮样式。创建一个按钮并在上面指定该样式。将显示按钮(没有边框和所有内容),但单击该按钮将不会导致任何操作。但是如果你看一下 VisualStateGroup 它应该移动 2 个像素。

标签: .net wpf visualstatemanager


【解决方案1】:

您是否尝试过将 TranslateTransition 移到 ControlTemplate 本身内部? (你可以把它放在模板的资源部分。)

【讨论】:

    猜你喜欢
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2018-07-06
    • 2020-04-04
    • 2023-04-06
    • 2017-08-01
    • 1970-01-01
    相关资源
    最近更新 更多