【问题标题】:Remove/Override Gridview Style in Windows 8.1 Universal app在 Windows 8.1 通用应用程序中删除/覆盖 Gridview 样式
【发布时间】:2017-02-10 11:37:38
【问题描述】:

我正在开发一个 Windows 8.1 通用应用程序。我的应用程序中有一个网格视图。当我在 gridview 中按下/单击一个项目时,我会看到该项目带有动画或类似于我们按下/按住按钮时出现的风格。附上示例图片。

我想从 gridview 项目中删除此样式。建议我实现这一目标的方法。

【问题讨论】:

  • 您是否尝试过将 SelectionMode 设为 None。否则,您可能必须编辑模板并禁用悬停部分的突出显示。
  • SelectionMode as None 不起作用。除了编辑模板没有其他方法吗?如果是这样,您能否提供一个示例样式模板,将 Pressed/Clicked 样式覆盖为 none。我是 XAML 新手。

标签: xaml gridview windows-8.1-universal


【解决方案1】:

将此用作 GridViewItem 的样式,我在其中注释了悬停和按下事件时突出显示的代码。

<!-- Style for Windows.UI.Xaml.Controls.GridViewItem -->
<Style TargetType="GridViewItem" x:Key="GridViewItemExpanded">
  <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
  <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
  <Setter Property="Background" Value="Transparent"/>
  <Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
  <Setter Property="TabNavigation" Value="Local"/>
  <Setter Property="IsHoldingEnabled" Value="True"/>
  <Setter Property="HorizontalContentAlignment" Value="Center"/>
  <Setter Property="VerticalContentAlignment" Value="Center"/>
  <Setter Property="Margin" Value="0,0,4,4"/>
  <Setter Property="MinWidth" Value="{ThemeResource GridViewItemMinWidth}"/>
  <Setter Property="MinHeight" Value="{ThemeResource GridViewItemMinHeight}"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="GridViewItem">
        <Grid x:Name="ContentBorder"
                Background="{TemplateBinding Background}"
                BorderBrush="{TemplateBinding BorderBrush}"
                BorderThickness="{TemplateBinding BorderThickness}">
          <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
              <VisualState x:Name="Normal">
                <Storyboard>
                  <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter" />
                </Storyboard>
              </VisualState>
              <VisualState x:Name="PointerOver">
                <Storyboard>
                  <DoubleAnimation Storyboard.TargetName="BorderRectangle"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1"/>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderRectangle" Storyboard.TargetProperty="Stroke">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListLowBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Stroke">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" />
                  </ObjectAnimationUsingKeyFrames>
                  <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter" />
                </Storyboard>
              </VisualState>
              <VisualState x:Name="Pressed">
                <--<Storyboard>
                  <DoubleAnimation Storyboard.TargetName="BorderRectangle"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1"/>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderRectangle" Storyboard.TargetProperty="Stroke">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListMediumBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Stroke">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" />
                  </ObjectAnimationUsingKeyFrames>
                  <PointerDownThemeAnimation TargetName="ContentPresenter" />
                </Storyboard>-->
              </VisualState>
              <VisualState x:Name="Selected">
                <Storyboard>
                  <DoubleAnimation Storyboard.TargetName="MultiSelectCheck"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1"/>
                  <DoubleAnimation Storyboard.TargetName="BorderRectangle"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1"/>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderRectangle" Storyboard.TargetProperty="Stroke">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAccentBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Stroke">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="MultiSelectSquare" Storyboard.TargetProperty="Background">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAccentBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter" />
                </Storyboard>
              </VisualState>
              <VisualState x:Name="PointerOverSelected">
               <--<Storyboard>
                  <DoubleAnimation Storyboard.TargetName="MultiSelectCheck"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1"/>
                  <DoubleAnimation Storyboard.TargetName="BorderRectangle"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1"/>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderRectangle" Storyboard.TargetProperty="Stroke">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListAccentMediumBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Stroke">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="MultiSelectSquare" Storyboard.TargetProperty="Background">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAccentBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter" />
                </Storyboard>-->
              </VisualState>
              <VisualState x:Name="PressedSelected">
               <--<Storyboard>
                  <DoubleAnimation Storyboard.TargetName="MultiSelectCheck"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1"/>
                  <DoubleAnimation Storyboard.TargetName="BorderRectangle"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1"/>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderRectangle" Storyboard.TargetProperty="Stroke">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListAccentHighBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Stroke">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="MultiSelectSquare" Storyboard.TargetProperty="Background">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAccentBrush}" />
                  </ObjectAnimationUsingKeyFrames>
                  <PointerDownThemeAnimation TargetName="ContentPresenter" />
                </Storyboard>-->
              </VisualState>
            </VisualStateGroup>
            <VisualStateGroup x:Name="DisabledStates">
              <VisualState x:Name="Enabled"/>
              <VisualState x:Name="Disabled">
                <Storyboard>
                  <DoubleAnimation Storyboard.TargetName="ContentBorder"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="{ThemeResource ListViewItemDisabledThemeOpacity}"/>
                </Storyboard>
              </VisualState>
            </VisualStateGroup>
            <VisualStateGroup x:Name="FocusStates">
              <VisualState x:Name="Unfocused"/>
              <VisualState x:Name="Focused">
                <Storyboard>
                  <DoubleAnimation Storyboard.TargetName="FocusVisualWhite"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1"/>
                  <DoubleAnimation Storyboard.TargetName="FocusVisualBlack"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1"/>
                </Storyboard>
              </VisualState>
            </VisualStateGroup>
            <VisualStateGroup x:Name="MultiSelectStates">
              <VisualState x:Name="MultiSelectDisabled">
                <Storyboard>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="MultiSelectSquare" Storyboard.TargetProperty="Visibility">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Visible" />
                    <DiscreteObjectKeyFrame KeyTime="0:0:0.333" Value="Collapsed" />
                  </ObjectAnimationUsingKeyFrames>
                  <FadeOutThemeAnimation TargetName="MultiSelectSquare"/>
                </Storyboard>
              </VisualState>
              <VisualState x:Name="MultiSelectEnabled">
                <Storyboard>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="MultiSelectSquare" Storyboard.TargetProperty="Visibility">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Visible" />
                  </ObjectAnimationUsingKeyFrames>
                  <FadeInThemeAnimation TargetName="MultiSelectSquare"/>
                </Storyboard>
              </VisualState>
            </VisualStateGroup>
            <VisualStateGroup x:Name="DataVirtualizationStates">
              <VisualState x:Name="DataAvailable"/>
              <VisualState x:Name="DataPlaceholder">
                <Storyboard>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PlaceholderTextBlock" Storyboard.TargetProperty="Visibility">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Visible" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PlaceholderRect" Storyboard.TargetProperty="Visibility">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Visible" />
                  </ObjectAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
            </VisualStateGroup>
            <VisualStateGroup x:Name="ReorderHintStates">
              <VisualState x:Name="NoReorderHint"/>
              <VisualState x:Name="BottomReorderHint">
                <Storyboard>
                  <DragOverThemeAnimation TargetName="ContentBorder" ToOffset="{ThemeResource GridViewItemReorderHintThemeOffset}" Direction="Bottom" />
                </Storyboard>
              </VisualState>
              <VisualState x:Name="TopReorderHint">
                <Storyboard>
                  <DragOverThemeAnimation TargetName="ContentBorder" ToOffset="{ThemeResource GridViewItemReorderHintThemeOffset}" Direction="Top" />
                </Storyboard>
              </VisualState>
              <VisualState x:Name="RightReorderHint">
                <Storyboard>
                  <DragOverThemeAnimation TargetName="ContentBorder" ToOffset="{ThemeResource GridViewItemReorderHintThemeOffset}" Direction="Right" />
                </Storyboard>
              </VisualState>
              <VisualState x:Name="LeftReorderHint">
                <Storyboard>
                  <DragOverThemeAnimation TargetName="ContentBorder" ToOffset="{ThemeResource GridViewItemReorderHintThemeOffset}" Direction="Left" />
                </Storyboard>
              </VisualState>
              <VisualStateGroup.Transitions>
                <VisualTransition To="NoReorderHint" GeneratedDuration="0:0:0.2"/>
              </VisualStateGroup.Transitions>
            </VisualStateGroup>
            <VisualStateGroup x:Name="DragStates">
              <VisualState x:Name="NotDragging" />
              <VisualState x:Name="Dragging">
                <Storyboard>
                  <DoubleAnimation Storyboard.TargetName="ContentBorder"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="{ThemeResource ListViewItemDragThemeOpacity}" />
                  <DragItemThemeAnimation TargetName="ContentBorder" />
                </Storyboard>
              </VisualState>
              <VisualState x:Name="DraggingTarget">
                <Storyboard>
                  <DropTargetItemThemeAnimation TargetName="ContentBorder" />
                </Storyboard>
              </VisualState>
              <VisualState x:Name="MultipleDraggingPrimary">
                <Storyboard>
                  <!-- These two Opacity animations are required - the FadeInThemeAnimations
                                           on the same elements animate an internal Opacity. -->
                  <DoubleAnimation Storyboard.TargetName="MultiArrangeOverlayBackground"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1" />
                  <DoubleAnimation Storyboard.TargetName="MultiArrangeOverlayText"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="1" />
                  <DoubleAnimation Storyboard.TargetName="ContentBorder"
                                   Storyboard.TargetProperty="Opacity"
                                   Duration="0"
                                   To="{ThemeResource ListViewItemDragThemeOpacity}" />
                  <FadeInThemeAnimation TargetName="MultiArrangeOverlayBackground" />
                  <FadeInThemeAnimation TargetName="MultiArrangeOverlayText" />
                  <DragItemThemeAnimation TargetName="ContentBorder" />
                </Storyboard>
              </VisualState>
              <VisualState x:Name="MultipleDraggingSecondary">
                <Storyboard>
                  <FadeOutThemeAnimation TargetName="ContentBorder" />
                </Storyboard>
              </VisualState>
              <VisualState x:Name="DraggedPlaceholder">
                <Storyboard>
                  <FadeOutThemeAnimation TargetName="ContentBorder" />
                </Storyboard>
              </VisualState>
              <VisualStateGroup.Transitions>
                <VisualTransition To="NotDragging" GeneratedDuration="0:0:0.2"/>
              </VisualStateGroup.Transitions>
            </VisualStateGroup>
          </VisualStateManager.VisualStateGroups>
          <ContentPresenter x:Name="ContentPresenter"
                            ContentTransitions="{TemplateBinding ContentTransitions}"
                            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                            VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                            Margin="{TemplateBinding Padding}" />
          <!-- The 'Xg' text simulates the amount of space one line of text will occupy.
                            In the DataPlaceholder state, the Content is not loaded yet so we
                            approximate the size of the item using placeholder text. -->
          <TextBlock x:Name="PlaceholderTextBlock"
                      Visibility="Collapsed"
                      Text="Xg"
                      Foreground="{x:Null}"
                      Margin="{TemplateBinding Padding}"
                      IsHitTestVisible="False"
                      AutomationProperties.AccessibilityView="Raw"/>
          <Rectangle x:Name="PlaceholderRect"
                      Visibility="Collapsed"
                      Fill="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"/>
          <Rectangle x:Name="MultiArrangeOverlayBackground"
                      IsHitTestVisible="False"
                      Opacity="0"
                      Fill="{ThemeResource ListViewItemDragBackgroundThemeBrush}"
                      Grid.ColumnSpan="2"/>
          <Rectangle x:Name="BorderRectangle"
                      IsHitTestVisible="False"
                      Stroke="{ThemeResource SystemControlHighlightListAccentLowBrush}"
                      StrokeThickness="2"
                      Opacity="0"/>
          <Border x:Name="MultiSelectSquare"
                  Background="{ThemeResource SystemControlBackgroundChromeMediumBrush}"
                  Width="20"
                  Height="20"
                  Margin="0,2,2,0"
                  VerticalAlignment="Top"
                  HorizontalAlignment="Right"
                  Visibility="Collapsed" >
            <FontIcon x:Name="MultiSelectCheck"
                      FontFamily="{ThemeResource SymbolThemeFontFamily}"
                      Glyph="&#xE73E;"
                      FontSize="16"
                      Foreground="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
                      Opacity="0"/>
          </Border>
          <Rectangle x:Name="FocusVisualWhite"
                      IsHitTestVisible="False"
                      Stroke="{ThemeResource SystemControlForegroundAltHighBrush}"
                      StrokeEndLineCap="Square"
                      StrokeDashArray="1.0, 1.0"
                      StrokeDashOffset="1.5"
                      StrokeThickness="2"
                      Opacity="0"/>
          <Rectangle x:Name="FocusVisualBlack"
                      IsHitTestVisible="False"
                      Stroke="{ThemeResource SystemControlForegroundBaseHighBrush}"
                      StrokeEndLineCap="Square"
                      StrokeDashArray="1.0, 1.0"
                      StrokeDashOffset="0.5"
                      StrokeThickness="2"
                      Opacity="0"/>
          <TextBlock x:Name="MultiArrangeOverlayText"
                      Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DragItemsCount}"
                      Foreground="{ThemeResource ListViewItemDragForegroundThemeBrush}"
                      FontFamily="{ThemeResource ContentControlThemeFontFamily}"
                      FontSize="26.667"
                      IsHitTestVisible="False"
                      Opacity="0"
                      TextWrapping="Wrap"
                      TextTrimming="WordEllipsis"
                      Margin="18,9,0,0"
                      AutomationProperties.AccessibilityView="Raw"
                      Grid.ColumnSpan="2"/>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多