J'ai créé un style ListBox dans WPF afin qu'il soit rendu comme une liste de cases à cocher.WPF - ListBox ignore le style lorsque ItemsSource est lié
Lorsque je remplis les éléments de la ListBox manuellement, le style fonctionne parfaitement. Toutefois, lorsque je lie à la place la ItemsSource de la ListBox à une ressource statique (un ItemsControl contenant les éléments requis), le style est complètement supprimé.
Voici le style:
<Style x:Key="CheckBoxListStyle" TargetType="ListBox">
<Style.Resources>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid Margin="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<CheckBox IsChecked="{Binding IsSelected, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}"/>
<ContentPresenter
Grid.Column="1"
Margin="2,0,0,0" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Style.Resources>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Background" Value="Transparent" />
</Style>
Voici le code pour la zone de liste qui montre le style correctement:
<ListBox x:Name="ColumnsList"
Grid.Column="0"
Grid.Row="0"
Style="{StaticResource CheckBoxListStyle}"
BorderThickness="1">
<ListBox.Items>
<ListBoxItem>Test</ListBoxItem>
<ListBoxItem>Test2</ListBoxItem>
<ListBoxItem>Test3</ListBoxItem>
</ListBox.Items>
</ListBox>
Voici le code pour le ListBox qui ne tient pas compte du style:
<ListBox x:Name="ColumnsList2"
Grid.Column="0"
Grid.Row="0"
Style="{StaticResource CheckBoxListStyle}"
BorderThickness="1"
ItemsSource="{Binding Source={StaticResource Test1}, Path=Items}">
</ListBox>
En espérant que quelqu'un puisse m'aider - je suis assez novice dans tout cela et j'ai essayé tout ce à quoi je pouvais penser, mais tout ce que j'ai lu me porte à croire que la configuration de ItemsSource devrait avoir le même résultat que la configuration manuelle des éléments, donc je ne vois pas pourquoi cela ne fonctionnerait pas.
Merci,
AT
Excellent - sauf si vous oubliez le tag Setter.Value. En dehors de cela, cela semble fonctionner. Merci! –
Bon point, je l'ai ajouté dans la réponse :) – Arcturus