2016-02-29 8 views
5

C'è un modo per modificare le proprietà di un ListviewItem quando questo è selezionato?uwp win10 Listview SelectedItem Style

Ad esempio, desidero che un rettangolo all'interno di ListviewItem sia Rosso quando selezionato e Blu per impostazione predefinita.

Come ottenere questo in modo elegante?

risposta

16

È possibile impostare ListView.ItemContainerStyle per personalizzare lo stile di ListViewItems utilizzato nello ListView.

Questa pagina mostra lo stile di default: https://msdn.microsoft.com/en-us/library/windows/apps/mt299136.aspx

In caso di vostro esempio - si cambierebbe le Selected~Background immobili a codice simile al di sotto:

<ListView ...> 
    <ListView.ItemContainerStyle> 
     <Style 
      TargetType="ListViewItem"> 
      <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> 
+2

Inoltre, come modificare BorderBrush per SelectedItem utilizzando questo stile? –

-2

ho già risposto a questa domanda in un altro luogo per favore controllalo! UWP gridview item selection style

+1

Beh, questo può certamente funzionare, mi piace solo la mia risposta in più e non consiglierei la tua. :) –

+0

Grazie per la risposta, Filip. Ho già preparato lo xaml come l'hai presentato. Il codice di Ricardo mi ha solo spinto un ulteriore passo avanti per risolvere il problema. Ho votato entrambe le risposte, ma ho scelto il suo. Grazie ancora ad entrambi. – phm