L'élément sélectionné perd du style lorsque le focus est déplacé dans la ListBox WPF
Qu'est-ce que j'ai?
J'ai un ListBox
rempli avec des éléments d'un fichier XML. Étant donné une propriété DynamicResource
pour Style
et un déclencheur écrit pour IsSelected
dans ItemContainerStyle
.
Qu'est-ce que je veux faire?
Je veux garder l'élément sélectionné en surbrillance même après que le focus soit sorti du ListBox
.
Quel problème suis-je confronté?
Lorsque je sélectionne un élément du style spécifié dans IsSelected
déclencheur fonctionne. Mais, quand je déplace le focus hors de la zone de liste (appuyez sur onglet ou cliquez sur un autre contrôle) l'élément sélectionné perd son style. Est - il possible de conserver le style d'élément sélectionné?
Merci d'avance!
2 réponses
Si vous définissez uniquement la couleur d'arrière - plan, essayez de remplacer ControlBrush
pour la ListBox, selon cette réponse.
La réponse référencée résoudra dans certains cas le problème, mais n'est pas idéale car elle se casse lorsque le contrôle est désactivé / en lecture seule et remplace également les schémas de couleurs, plutôt que d'en tirer parti. Ma suggestion est d'ajouter ce qui suit dans les balises ListBox:
<ListBox....>
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border Name="Border" Padding="2" SnapsToDevicePixels="true">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Border" Property="Background"
Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.Resources>
</ListBox>
Ce que cela va faire est de définir la couleur D'arrière-plan de surbrillance sur l'élément de la zone de liste chaque fois qu'il est sélectionné (quel que soit l'état du contrôle).
Ma réponse est basée sur l'aide des réponses déjà données à ces réponses, ainsi que le blog suivant: http://blogs.vbcity.com/xtab/archive/2009/06/29/9344.aspx