2016-02-29 5 views
5

Есть ли способ изменить свойства ListviewItem, когда этот выбран?uwp win10 Listview SelectedItem Style

В качестве примера я хочу, чтобы прямоугольник внутри ListviewItem был красным, если выбрано, и синий по умолчанию.

Как достичь этого элегантным образом?

ответ

16

Вы можете установить ListView.ItemContainerStyle, чтобы настроить стиль ListViewItems, используемый в ListView.

Эта страница показывает стиль по умолчанию: 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

Также, как изменить BorderBrush для SelectedItem, используя этот стиль? –

-2

Я уже ответил на этот вопрос в другом месте пожалуйста, проверь это! UWP gridview item selection style

+1

Ну, это, безусловно, может работать, мне просто нравится мой ответ больше и не рекомендовал бы ваш. :) –

+0

Спасибо за ваш ответ, Филип. Я уже подготовил xaml так, как вы его представили. Код Рикардо просто подтолкнул меня на шаг вперед, чтобы решить эту проблему. Я проголосовал за оба ответа, но я выбрал его. Еще раз спасибо вам обоим. – phm

Смежные вопросы