J'ai un ListBox avec des styles personnalisés appliqués. Il semble parfois, lorsque je sélectionne une couleur puis une autre (ne pas appuyer sur Ctrl/Shift), il semble que 2 articles sont sélectionnés, parfois même plusWPF: Plus de 1 éléments rendus en tant que sélectionnés dans un contrôle ListBox?
Ce qui est avec ce rendu? Mon XAML ressemble
<ListBox ItemsSource="{Binding ThemeColors}" SelectedValue="{Binding Color}" SelectionChanged="ListBox_SelectionChanged" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Margin="3" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Padding" Value="0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border x:Name="Bd" SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" Padding="1">
<Rectangle Width="20" Height="20">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding}" />
</Rectangle.Fill>
</Rectangle>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="BorderBrush" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true"/>
<Condition Property="Selector.IsSelectionActive" Value="false"/>
</MultiTrigger.Conditions>
<Setter Property="BorderBrush" TargetName="Bd" Value="#FF999999"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
MISE À JOUR: Nov 14
donc j'ai suivi @Meleak conseils et enlevé tous les doublons, il arrive d'être quelques-uns. Mais maintenant, avez un autre problème. Parfois, lorsque je sélectionne une couleur, la bordure ne s'affiche pas, le style IsSelected n'est pas actif? Mais la couleur d'aperçu se met à jour, montrant que la liaison a fonctionné.
Est-ce que cela arrive à chaque fois pour ces couleurs particulières? Pouvez-vous poster votre code derrière/afficher les modèles? –
Oui le code derrière de cette application est en fait le modèle de vue ... http://pastebin.com/p5McmADR –