按钮焦点视觉状态和游戏手柄

时间:2017-05-17 16:01:41

标签: xaml uwp xbox

我希望有一个自定义的圆角按钮,当聚焦时它应该改变边框控件内的颜色。

 <Style x:Key="MyButtonStyle" TargetType="Button">
        <Setter Property="Margin" Value="0" />
        <Setter Property="HorizontalAlignment" Value="Stretch" />
        <Setter Property="VerticalAlignment" Value="Stretch" />

        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Grid Background="{TemplateBinding Background}" >
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal">
                                    <VisualState.Setters>
                                        <Setter Target="BorderRadius.BorderBrush" Value="Green" />
                                        <Setter Target="BorderRadius.Background" Value="Transparent" />
                                    </VisualState.Setters>
                                </VisualState>
                                <VisualState x:Name="PointerOver">
                                    <VisualState.Setters>
                                        <Setter Target="BorderRadius.BorderBrush" Value="White" />
                                        <Setter Target="BorderRadius.Background" Value="Blue" />
                                    </VisualState.Setters>
                                </VisualState>
                                <VisualState x:Name="Pressed">
                                    <VisualState.Setters>
                                        <Setter Target="BorderRadius.BorderBrush" Value="White" />
                                        <Setter Target="BorderRadius.Background" Value="Blue" />
                                    </VisualState.Setters>
                                </VisualState>
                                <VisualState x:Name="Focus" >
                                    <Storyboard>
                                        <ColorAnimation Storyboard.TargetName="BorderRadius" Storyboard.TargetProperty="BorderBrush" To="Blue"/>
                                    </Storyboard>
                                    <!--<VisualState.Setters>
                                        <Setter Target="BorderRadius.BorderBrush" Value="White"/>
                                        <Setter Target="BorderRadius.Background" Value="Blue"/>
                                    </VisualState.Setters>-->
                                </VisualState>
                            </VisualStateGroup>                                               
                        </VisualStateManager.VisualStateGroups>
                        <StackPanel>
                            <Border
                                x:Name="BorderRadius"
                                BorderThickness="1"
                                CornerRadius="22"
                                VerticalAlignment="Center"
                                HorizontalAlignment="Left"
                                >
                                <TextBlock
                                    x:Name="MyText"
                                    Text="{TemplateBinding Content}"
                                    FontFamily="{TemplateBinding FontFamily}"
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    FontSize="{TemplateBinding FontSize}"
                                    />
                            </Border>
                        </StackPanel>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

在xbox上,“普通”,“按下”的视觉状态工作正常,但我无法使用“焦点”视觉状态,这意味着我无法在使用游戏手柄时改变它的颜色。当我使用左手按钮时,会出现按钮默认黑色边框,但不会触发“焦点”视觉状态。

0 个答案:

没有答案