MouseOver的可视状态在Windows Phone上不起作用

时间:2012-03-23 21:45:51

标签: windows-phone-7

我生成按钮样式的代码。我想在鼠标悬停期间将borderbrush更改为YellowGreen,但似乎没有影响。有人会告诉我代码有什么问题吗?有我的代码。

    <Style x:Key="CustomButtonStyle" TargetType="Button">
        <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                    <Grid>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal">
                                    <Storyboard>
                                        <DoubleAnimation To="1" Duration="0:00:00.5" Storyboard.TargetName="NormalBackground" Storyboard.TargetProperty="Opacity"/>
                                        <DoubleAnimation To="0" Duration="0:00:00.5" Storyboard.TargetName="HoverBackground" Storyboard.TargetProperty="Opacity"/>
                                        <DoubleAnimation To="0" Duration="0:00:00.5" Storyboard.TargetName="PressedBackground" Storyboard.TargetProperty="Opacity"/>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="MouseOver">
                                    <Storyboard>
                                        <DoubleAnimation To="0" Duration="0:00:00.5" Storyboard.TargetName="NormalBackground" Storyboard.TargetProperty="Opacity"/>
                                        <DoubleAnimation To="1" Duration="0:00:00.5" Storyboard.TargetName="HoverBackground" Storyboard.TargetProperty="Opacity"/>
                                        <DoubleAnimation To="0" Duration="0:00:00.5" Storyboard.TargetName="PressedBackground" Storyboard.TargetProperty="Opacity"/>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Pressed">
                                    <Storyboard>
                                        <DoubleAnimation To="0" Duration="0:00:00.5" Storyboard.TargetName="NormalBackground" Storyboard.TargetProperty="Opacity"/>
                                        <DoubleAnimation To="0" Duration="0:00:00.5" Storyboard.TargetName="HoverBackground" Storyboard.TargetProperty="Opacity"/>
                                        <DoubleAnimation To="1" Duration="0:00:00.5" Storyboard.TargetName="PressedBackground" Storyboard.TargetProperty="Opacity"/>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>

                        <Border Name="NormalBackground" CornerRadius="3" BorderBrush="Black" BorderThickness="1" Background="black" />
                        <Border Name="HoverBackground" Opacity="0" CornerRadius="3" BorderBrush="GreenYellow" BorderThickness="3" Background="Gray" />
                        <Border Name="PressedBackground" Opacity="0" CornerRadius="8" BorderBrush="Black" BorderThickness="1" Background="Red" />

                        <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" />
                    </Grid>

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

以下代码显示我如何在MainPage.xaml上添加按钮。

<Button x:Name="btnCall"    Click="btnCall_Click" Grid.Row="0" Grid.Column="1"  Content="test"   
Style="{StaticResource CustomButtonStyle}"   />  

2 个答案:

答案 0 :(得分:4)

Windows Phone实际上没有鼠标悬停。

请记住,在手机上,您没有鼠标。你要做的是什么(换句话说,鼠标在你身上试图模仿手机上的东西是什么?)

[通常人们通过使用鼠标与模拟器进行交互,但当然手机本身没有相应的东西,因此支持它并没有多大意义]

答案 1 :(得分:0)

鼠标将光标移动到未定义的区域,因此,它需要在地板上保持接地,以跟踪屏幕中根据创建的水平或垂直增量增加或减少的位置。

触摸屏通常用于在已定义的区域中挑选和选择位置。你不会用行走的鼠标“寻找”一个位置,你已经“知道”了它。当您在屏幕上移动手指时,它会根据增量触发手势事件,而不是根据此增量移动光标。