2016-04-26 7 views
0

Ich verwende this solution zum Deaktivieren der Tilt-Animation Effekt auf ListView-Element-Container. Dieser Code funktioniert gut, aber visuelle Zustände SelectedPointerOver und SelectedPressed werden nicht ausgelöst: wenn ich Maus über/drücke das ausgewählte Element, ändert es nicht die Hintergrundfarbe. HierSelectedPointerOver und SelectedPressed funktionieren nicht für benutzerdefinierte ListViewItem-Stil in Windows 10 Universal App

ist der Style-Code von App.xaml:

<Style x:Key="NavigationListViewStyle" TargetType="ListViewItem"> 
      <Setter Property="Padding" Value="0" /> 
      <Setter Property="Margin" Value="0" /> 
      <Setter Property="VerticalContentAlignment" Value="Center" /> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="ListViewItem"> 
         <Grid x:Name="RootGrid"> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="CommonStates"> 
            <VisualState x:Name="Normal" /> 
            <VisualState x:Name="PointerOver"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="PressedBackground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="#FF323A45" /> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="Pressed"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="PressedBackground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="#FF3C4550" /> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="Selected"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="PressedBackground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="#FF46293B" /> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="SelectedPointerOver"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="PressedBackground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="#FF553549" /> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="SelectedPressed"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="PressedBackground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="#FF603851" /> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <Rectangle x:Name="PressedBackground" Fill="Transparent" Control.IsTemplateFocusTarget="True"/> 
          <ContentPresenter /> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

Und der Steuercode:

<ListView Grid.Row="0" x:Name="NavigationListView" ItemsSource="{x:Bind NavigationList, Mode=OneTime}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
          ScrollViewer.VerticalScrollBarVisibility="Auto" ItemContainerStyle="{ThemeResource NavigationListViewStyle}" IsItemClickEnabled="False" 
          SelectionChanged="NavigationListView_SelectionChanged"> 
        <ListView.ItemTemplate> 
         <DataTemplate x:DataType="models:MenuItem"> 
          <StackPanel Orientation="Horizontal" Padding="15"> 
           <FontIcon FontFamily="ms-appx:/Fonts/Icons.ttf#icons" Glyph="{x:Bind GlyphCode}" Foreground="{ThemeResource AccentColorBrush}" VerticalAlignment="Center" /> 
           <TextBlock Text="{x:Bind Title}" Margin="30,0,0,0" Foreground="White" /> 
          </StackPanel> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 

Ich verwende Windows SDK 10.1.10586.15 mit VS2015 Update 2.

Antwort

0

In UWP werden visuelle Zustände von ListViewItem geändert. Sie können das Projekt in Blend öffnen und ItemContainerStyle bearbeiten. Folgende Stile

generiert werden
<Style TargetType="ListViewItem"> 
<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="Padding" Value="12,0,12,0"/> 
<Setter Property="HorizontalContentAlignment" Value="Left"/> 
<Setter Property="VerticalContentAlignment" Value="Center"/> 
<Setter Property="MinWidth" Value="{ThemeResource ListViewItemMinWidth}"/> 
<Setter Property="MinHeight" Value="{ThemeResource ListViewItemMinHeight}"/> 
<Setter Property="Template"> 
    <Setter.Value> 
    <ControlTemplate TargetType="ListViewItem"> 
     <ListViewItemPresenter 
      ContentTransitions="{TemplateBinding ContentTransitions}" 
      SelectionCheckMarkVisualEnabled="True" 
      CheckBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" 
      CheckBoxBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" 
      DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}" 
      DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}" 
      FocusBorderBrush="{ThemeResource SystemControlForegroundAltHighBrush}" 
      FocusSecondaryBorderBrush="{ThemeResource SystemControlForegroundBaseHighBrush}" 
      PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}" 
      PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}" 
      PointerOverForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}" 
      SelectedBackground="{ThemeResource SystemControlHighlightListAccentLowBrush}" 
      SelectedForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}" 
      SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListAccentMediumBrush}" 
      PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}" 
      SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}" 
      DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}" 
      DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}" 
      ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}" 
      HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
      VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" 
      ContentMargin="{TemplateBinding Padding}" 
      CheckMode="Inline"/> 
    </ControlTemplate> 
    </Setter.Value> 
</Setter> 
</Style> 

Von oben Stil bearbeiten SelectedPressedBackgroundSelectedPointerOverBackground von ListViewItemPresenter.

Wenn Sie visuelle Zustände wollen gehen Sie durch diese Default styles of ListViewItem

+0

Vielen Dank! Funktioniert perfekt. –

+0

Froh, es hat funktioniert. Bitte markieren Sie die Antwort als richtig :) – Archana