2013-10-17 1 views
0

Je développe une application Windows Store à l'aide de WPF. Dans la page principale, j'ai une image de fond qui couvre tout l'écran. J'utilise quelques ListBox es avec un ItemTemplate personnalisé et un fond transparent. Jusqu'à présent, cela fonctionne bien.Comment modifier l'arrière-plan par défaut de l'élément sélectionné dans ListBox

La chose ici, c'est quand je sélectionne un élément du ListBox, il est mis en évidence avec une couleur pourpre (le défaut je suppose) et l'arrière-plan de la ListBox changer en blanc. J'ai essayé de le changer en utilisant des styles et en l'appliquant quand l'article est sélectionné. Cependant, cela ne fonctionne pas. Est-ce que quelqu'un sait comment changer la couleur par défaut d'un élément sélectionné?

Cordialement!

+0

[couleur de fond de changement pour le poste ListBox sélectionné] Possible double (http://stackoverflow.com/questions/2138200/change-background-color-for-selected-listbox-item/2138237 # 2138237) –

+0

Salut. Merci pour la réponse. J'avais déjà vu le lien que vous avez posté. Cependant, la solution donnée ici ne s'applique pas au système d'exploitation Windows 8. Il y a quelques commentaires sur la façon de l'implémenter dans Windwos 8. Je vais les tester. – MikePR

Répondre

0

Peut-être que vous devriez changer le modèle de style par défaut de ListBoxItem par rapport à vos besoins.

<Style TargetType="ListBoxItem"> 
<Setter Property="Padding" Value="3" /> 
    <Setter Property="HorizontalContentAlignment" Value="Left" /> 
    <Setter Property="VerticalContentAlignment" Value="Top" /> 
    <Setter Property="Background" Value="Transparent" /> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="TabNavigation" Value="Local" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListBoxItem"> 
       <Grid Background="{TemplateBinding Background}"> 
        <vsm:VisualStateManager.VisualStateGroups> 
         <vsm:VisualStateGroup x:Name="CommonStates"> 
          <vsm:VisualState x:Name="Normal" /> 
          <vsm:VisualState x:Name="MouseOver"> 
           <Storyboard> 
            <DoubleAnimation Storyboard.TargetName="fillColor" Storyboard.TargetProperty="Opacity" Duration="0" To=".35"/> 
           </Storyboard> 
          </vsm:VisualState> 
          <vsm:VisualState x:Name="Disabled"> 
           <Storyboard> 
            <DoubleAnimation Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="Opacity" Duration="0" To=".55" /> 
           </Storyboard> 
          </vsm:VisualState> 
         </vsm:VisualStateGroup> 
         <vsm:VisualStateGroup x:Name="SelectionStates"> 
          <vsm:VisualState x:Name="Unselected" /> 
          <vsm:VisualState x:Name="Selected"> 
           <Storyboard> 
            <DoubleAnimation Storyboard.TargetName="fillColor2" Storyboard.TargetProperty="Opacity" Duration="0" To=".75"/> 
           </Storyboard> 
          </vsm:VisualState> 
         </vsm:VisualStateGroup> 
         <vsm:VisualStateGroup x:Name="FocusStates"> 
          <vsm:VisualState x:Name="Focused"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="Visibility" Duration="0"> 
             <DiscreteObjectKeyFrame KeyTime="0"> 
              <DiscreteObjectKeyFrame.Value> 
               <Visibility>Visible</Visibility> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </vsm:VisualState> 
          <vsm:VisualState x:Name="Unfocused"/> 
         </vsm:VisualStateGroup> 
        </vsm:VisualStateManager.VisualStateGroups> 
        <Rectangle x:Name="fillColor" Opacity="0" Fill="#FFBADDE9" IsHitTestVisible="False" RadiusX="1" RadiusY="1"/> 
        <Rectangle x:Name="fillColor2" Opacity="0" Fill="#FFBADDE9" IsHitTestVisible="False" RadiusX="1" RadiusY="1"/> 
        <ContentPresenter 
          x:Name="contentPresenter" 
          Content="{TemplateBinding Content}" 
          ContentTemplate="{TemplateBinding ContentTemplate}" 
          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
          Margin="{TemplateBinding Padding}"/> 
        <Rectangle x:Name="FocusVisualElement" Stroke="#FF6DBDD1" StrokeThickness="1" Visibility="Collapsed" RadiusX="1" RadiusY="1" /> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

MSDN REFERENCE HERE

+0

Salut oscar. J'ai fait quelque chose de similaire basé sur le code que vous avez posté. Maintenant, ça fonctionne bien. J'ai une couleur personnalisée pour les éléments sélectionnés. – MikePR

Questions connexes