Xaml 如何停用GridViewItem单击动画?

Xaml 如何停用GridViewItem单击动画?,xaml,windows-store-apps,Xaml,Windows Store Apps,如何在右键单击GridViewItem时禁用GridViewItem单击动画(如下所示), 编辑: 内特建议后的代码(不起作用)。我添加了视觉状态,但仍然可以看到动画。但是,由于我添加了VisualStateGroup元素(我不关心这一点,但代码有一些效果),选定的项目不再具有蓝色边框 你好,视频! 为了只在右键单击时执行此操作,您可能需要创建一个自定义控件,该控件在右键单击时不会触发指针按下状态的更改,但在左键单击时会触发状态的更改。 下一部分用于左键和右键单击: 根据您当前的Xaml,有

如何在右键单击GridViewItem时禁用GridViewItem单击动画(如下所示),

编辑:
内特建议后的代码(不起作用)。我添加了视觉状态,但仍然可以看到动画。但是,由于我添加了
VisualStateGroup
元素(我不关心这一点,但代码有一些效果),选定的项目不再具有蓝色边框


你好,视频!

为了只在右键单击时执行此操作,您可能需要创建一个自定义控件,该控件在右键单击时不会触发指针按下状态的更改,但在左键单击时会触发状态的更改。

下一部分用于左键和右键单击:

根据您当前的Xaml,有两件事需要尝试

中有两个内容模板,一个使用
GridViewItemPresenter
,另一个不使用

首先,尝试使用
GridViewItemPresenter
样式,但使用新的
TransitionCollection
覆盖
ContentTransitions
属性

<!-- Default style for Windows.UI.Xaml.Controls.GridViewItem -->
<Style TargetType="GridViewItem">
    <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
    <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="TabNavigation" Value="Local"/>
    <Setter Property="IsHoldingEnabled" Value="True"/>
    <Setter Property="Margin" Value="0,0,2,2"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="GridViewItem">
                <GridViewItemPresenter
                    Padding="{TemplateBinding Padding}"
                    SelectionCheckMarkVisualEnabled="True"
                    CheckHintBrush="{ThemeResource ListViewItemCheckHintThemeBrush}"
                    CheckSelectingBrush="{ThemeResource ListViewItemCheckSelectingThemeBrush}"
                    CheckBrush="{ThemeResource ListViewItemCheckThemeBrush}"
                    DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}"
                    DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}"
                    FocusBorderBrush="{ThemeResource ListViewItemFocusBorderThemeBrush}"
                    PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"
                    PointerOverBackground="{ThemeResource ListViewItemPointerOverBackgroundThemeBrush}"
                    SelectedBorderThickness="{ThemeResource GridViewItemCompactSelectedBorderThemeThickness}"
                    SelectedBackground="{ThemeResource ListViewItemSelectedBackgroundThemeBrush}"
                    SelectedForeground="{ThemeResource ListViewItemSelectedForegroundThemeBrush}"
                    SelectedPointerOverBackground="{ThemeResource ListViewItemSelectedPointerOverBackgroundThemeBrush}"
                    SelectedPointerOverBorderBrush="{ThemeResource ListViewItemSelectedPointerOverBorderThemeBrush}"
                    DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
                    DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}"
                    ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
                    HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                    VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                    PointerOverBackgroundMargin="1"
                    ContentMargin="4" >
                    <GridViewItemPresenter.ContentTransitions>
                        <TransitionCollection/>
                    </GridViewItemPresenter.ContentTransitions>
                </GridViewItemPresenter>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

希望这有助于和快乐的编码

在中,特别是在底部,您会注意到,对于按下的
状态,有一个
情节提要
,其中包括一个
指针下的含义
。复制样式,删除故事板(或者只是动画),应该很好。谢谢你的回答,但是:不,不行。你能检查一下我是否犯了错误吗?看起来
指针被按下了
可能有类似的动画。请尝试覆盖它。我可以问一下,您是否正在
GridView
中设置
ItemContainerStyle
?或者您刚刚在参考资料中定义了一个新的
GridViewItemStyle
?我们可以看看你的
GridView
声明吗?我为你添加了完整的XAML代码。太好了,这很有帮助。动画现在被禁用。但是,也可以单击鼠标左键。在我还没有找到解决这个问题的方法之前,我不能把这个问题标记为已回答,而是有帮助的。如果我找到了解决方案,我会将其添加到您的答案中,并将其标记为已回答。:)非常感谢。为了只在右键单击时执行此操作,您可能需要创建一个自定义控件,该控件在右键单击时不会触发指针按下状态的更改,但在左键单击时会触发指针按下状态的更改。
<!-- Default style for Windows.UI.Xaml.Controls.GridViewItem -->
<Style TargetType="GridViewItem">
    <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
    <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="TabNavigation" Value="Local"/>
    <Setter Property="IsHoldingEnabled" Value="True"/>
    <Setter Property="Margin" Value="0,0,2,2"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="GridViewItem">
                <GridViewItemPresenter
                    Padding="{TemplateBinding Padding}"
                    SelectionCheckMarkVisualEnabled="True"
                    CheckHintBrush="{ThemeResource ListViewItemCheckHintThemeBrush}"
                    CheckSelectingBrush="{ThemeResource ListViewItemCheckSelectingThemeBrush}"
                    CheckBrush="{ThemeResource ListViewItemCheckThemeBrush}"
                    DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}"
                    DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}"
                    FocusBorderBrush="{ThemeResource ListViewItemFocusBorderThemeBrush}"
                    PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"
                    PointerOverBackground="{ThemeResource ListViewItemPointerOverBackgroundThemeBrush}"
                    SelectedBorderThickness="{ThemeResource GridViewItemCompactSelectedBorderThemeThickness}"
                    SelectedBackground="{ThemeResource ListViewItemSelectedBackgroundThemeBrush}"
                    SelectedForeground="{ThemeResource ListViewItemSelectedForegroundThemeBrush}"
                    SelectedPointerOverBackground="{ThemeResource ListViewItemSelectedPointerOverBackgroundThemeBrush}"
                    SelectedPointerOverBorderBrush="{ThemeResource ListViewItemSelectedPointerOverBorderThemeBrush}"
                    DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
                    DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}"
                    ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
                    HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                    VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                    PointerOverBackgroundMargin="1"
                    ContentMargin="4" >
                    <GridViewItemPresenter.ContentTransitions>
                        <TransitionCollection/>
                    </GridViewItemPresenter.ContentTransitions>
                </GridViewItemPresenter>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<VisualStateGroup x:Name="CommonStates">
    <VisualState x:Name="Normal"/>
    <VisualState x:Name="PointerOver">
        <Storyboard>
            <DoubleAnimation Storyboard.TargetName="PointerOverBorder"
                             Storyboard.TargetProperty="Opacity"
                             Duration="0"
                             To="1" />
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectionBackground"
                                            Storyboard.TargetProperty="Fill">
                <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListViewItemSelectedPointerOverBackgroundThemeBrush}" />
            </ObjectAnimationUsingKeyFrames>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectedBorder"
                                            Storyboard.TargetProperty="Stroke">
                <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListViewItemSelectedPointerOverBorderThemeBrush}" />
            </ObjectAnimationUsingKeyFrames>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectedEarmark"
                                           Storyboard.TargetProperty="Fill">
                <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListViewItemSelectedPointerOverBackgroundThemeBrush}" />
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>
    </VisualState>
    <VisualState x:Name="Pressed">
        <Storyboard/>
    </VisualState>
    <VisualState x:Name="PointerOverPressed">
        <Storyboard>
            <DoubleAnimation Storyboard.TargetName="PointerOverBorder"
                             Storyboard.TargetProperty="Opacity"
                             Duration="0"
                             To="1" />
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectionBackground"
                                            Storyboard.TargetProperty="Fill">
                <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListViewItemSelectedPointerOverBackgroundThemeBrush}" />
            </ObjectAnimationUsingKeyFrames>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectedBorder"
                                            Storyboard.TargetProperty="Stroke">
                <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListViewItemSelectedPointerOverBorderThemeBrush}" />
            </ObjectAnimationUsingKeyFrames>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectedEarmark"
                                           Storyboard.TargetProperty="Fill">
                <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListViewItemSelectedPointerOverBackgroundThemeBrush}" />
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>
    </VisualState>
    <VisualState x:Name="Disabled">
        <Storyboard>
            <DoubleAnimation Storyboard.TargetName="contentPresenter"
                             Storyboard.TargetProperty="Opacity"
                             Duration="0"
                             To="{ThemeResource ListViewItemDisabledThemeOpacity}" />
        </Storyboard>
    </VisualState>
</VisualStateGroup>