2017-07-11 2 views
0

Ich habe eine ListView. Es ist nicht dynamisch, ich gebe es ListViewItem im XAML wie folgt. Es gibt sehr wenige ListViewItem s in der ListView. Das XAML ist wie folgt:UWP Stil der ausgewählten ListViewItem ändern

<ListView Name="ABC"> 
    <ListViewItem> 
     <StackPanel> 
      <BitmapIcon/> 
      <TextBlock/> 
     </StackPanel> 
    </ListViewItem> 

    <ListViewItem> 
     <StackPanel> 
      <BitmapIcon/> 
      <TextBlock/> 
     </StackPanel> 
    </ListViewItem> 

    <ListViewItem> 
     <StackPanel> 
      <BitmapIcon/> 
      <TextBlock/> 
     </StackPanel> 
    </ListViewItem> 
</ListView> 

Wenn ein ListViewItem ausgewählt wird, ich die Foreground Eigenschaft des BitmapIcon im Inneren des ListViewItem auf einen anderen Wert geändert werden soll. Wie erreiche ich das? Ich bin offen dafür, die ListView zu einigen leichteren Kontrollen wie ItemsControl zu ändern, solange ich in der Lage bin, die Foreground-Eigenschaft der BitmapIcon zu ändern.

+0

Erstellen Sie die Liste dynamisch? –

+0

NEIN, es ist statisch, alle ListViewItems sind in XAML selbst definiert. Es gibt nur 4 'ListViewItem' –

Antwort

2

Dies sollte innerhalb der Style der ListViewItem erfolgen. Sie müssen nur die SelectedForeground in die gewünschte Farbe ändern. Zum Beispiel -

<Style x:Key="ListViewItemStyle1" TargetType="ListViewItem"> 
    <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" /> 
    <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" /> 
    <Setter Property="Background" Value="{ThemeResource ListViewItemBackground}" /> 
    <Setter Property="Foreground" Value="{ThemeResource ListViewItemForeground}" /> 
    <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="AllowDrop" Value="False" /> 
    <Setter Property="UseSystemFocusVisuals" Value="True" /> 
    <Setter Property="FocusVisualMargin" Value="0" /> 
    <Setter Property="FocusVisualPrimaryBrush" Value="{ThemeResource ListViewItemFocusVisualPrimaryBrush}" /> 
    <Setter Property="FocusVisualPrimaryThickness" Value="2" /> 
    <Setter Property="FocusVisualSecondaryBrush" Value="{ThemeResource ListViewItemFocusVisualSecondaryBrush}" /> 
    <Setter Property="FocusVisualSecondaryThickness" Value="1" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListViewItem"> 
       <ListViewItemPresenter CheckBrush="{ThemeResource ListViewItemCheckBrush}" 
             ContentMargin="{TemplateBinding Padding}" 
             CheckMode="{ThemeResource ListViewItemCheckMode}" 
             ContentTransitions="{TemplateBinding ContentTransitions}" 
             CheckBoxBrush="{ThemeResource ListViewItemCheckBoxBrush}" 
             DragForeground="{ThemeResource ListViewItemDragForeground}" 
             DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}" 
             DragBackground="{ThemeResource ListViewItemDragBackground}" 
             DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}" 
             FocusVisualPrimaryBrush="{TemplateBinding FocusVisualPrimaryBrush}" 
             FocusVisualSecondaryThickness="{TemplateBinding FocusVisualSecondaryThickness}" 
             FocusBorderBrush="{ThemeResource ListViewItemFocusBorderBrush}" 
             FocusVisualMargin="{TemplateBinding FocusVisualMargin}" 
             FocusVisualPrimaryThickness="{TemplateBinding FocusVisualPrimaryThickness}" 
             FocusSecondaryBorderBrush="{ThemeResource ListViewItemFocusSecondaryBorderBrush}" 
             FocusVisualSecondaryBrush="{TemplateBinding FocusVisualSecondaryBrush}" 
             HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
             Control.IsTemplateFocusTarget="True" 
             PointerOverForeground="{ThemeResource ListViewItemForegroundPointerOver}" 
             PressedBackground="{ThemeResource ListViewItemBackgroundPressed}" 
             PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackground}" 
             PointerOverBackground="{ThemeResource ListViewItemBackgroundPointerOver}" 
             ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}" 
             SelectedPressedBackground="{ThemeResource ListViewItemBackgroundSelectedPressed}" 
             SelectionCheckMarkVisualEnabled="{ThemeResource ListViewItemSelectionCheckMarkVisualEnabled}" 
             SelectedForeground="LightBlue" 
             SelectedPointerOverBackground="{ThemeResource ListViewItemBackgroundSelectedPointerOver}" 
             SelectedBackground="{ThemeResource ListViewItemBackgroundSelected}" 
             VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" /> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Solange Sie angeben, die nicht Foreground Eigentum auf Ihrem BitmapIcon, wird es automatisch die aktualisierte Farbe erhalten (von SelectedForeground im Stil oben), wenn die ListViewItem ausgewählt wird.

Verwandte Themen