2016-02-29 42 views
5

當選擇了這個選項時,有沒有辦法改變ListviewItem的屬性?uwp win10列表視圖SelectedItem樣式

作爲一個例子,我希望ListviewItem中的矩形在選中時是紅色的,默認情況下是藍色的。

如何以優雅的方式實現這一目標?

回答

16

您可以設置ListView.ItemContainerStyle來定製ListView中使用的ListViewItems的樣式。

此頁面顯示的默認樣式:https://msdn.microsoft.com/en-us/library/windows/apps/mt299136.aspx

在您的例子的情況下 - 你會在代碼更改Selected~Background性質類似於如下:

<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

此外,如何使用此樣式更改SelectedItem的BorderBrush? –

-2

我已經在另一個地方回答了這個問題請檢查一下! UWP gridview item selection style

+1

那麼,那可能肯定會起作用,我只是喜歡我的回答而不會推薦你。 :) –

+0

謝謝你的回答,菲利普。我已經準備好了xaml的樣子。裏卡多的代碼讓我進一步解決了這個問題。我投了兩個答案,但我選擇了他的答案。再次感謝你們兩位。 – phm