2016-02-29 16 views
5

Czy istnieje sposób na zmianę właściwości obiektu ListviewItem, gdy jest on wybrany?uwp win10 Listview SelectedItem Style

Jako przykład chcę, aby prostokąt wewnątrz obiektu ListviewItem był czerwony, gdy został wybrany, a niebieski domyślnie.

Jak osiągnąć to w elegancki sposób?

Odpowiedz

16

Można ustawić ListView.ItemContainerStyle, aby dostosować styl ListViewItems używany w ListView.

Ta strona pokazuje domyślny styl: https://msdn.microsoft.com/en-us/library/windows/apps/mt299136.aspx

W przypadku Twojej przykład - byś zmienił właściwości Selected~Background w kodzie podobny do poniżej:

<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

Również, jak zmienić BorderBrush dla SelectedItem używając tego stylu? –

-2

już odpowiedział na to pytanie w innym miejscu proszę sprawdź to! UWP gridview item selection style

+1

Cóż, to może zadziałać, po prostu podoba mi się moja odpowiedź i nie poleciłbym twojej. :) –

+0

Dziękuję za odpowiedź, Filip. Już wcześniej przygotowałem xaml tak, jak to przedstawiłeś. Kod Ricarda popchnął mnie o krok dalej, aby rozwiązać problem. Głosowałem na obie odpowiedzi, ale wybrałem jego. Jeszcze raz dziękuję wam obu. – phm