J'essaie de faire quelque chose qui devrait être simple cerveau-mort, cependant, je ne peux pas le faire fonctionner. J'affiche une liste d'éléments dans une liste. J'ai ajouté des cases à cocher dans la zone de liste afin que l'utilisateur puisse sélectionner plusieurs éléments. Cependant, même si l'objet dans la liste liée à ListBox a une propriété "IsSelected", il n'est pas lié. Je pourrais utiliser de l'aide car cela me rend fou.La liaison de la propriété IsSelectedProperty d'une ListBox dans WPF ne fonctionne pas. J'ai besoin d'aide
<Style x:Key="CheckBoxListStyle" TargetType="{x:Type ListBox}">
<Setter Property="SelectionMode" Value="Multiple"></Setter>
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Margin" Value="2"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<CheckBox Focusable="False"
IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}">
<ContentPresenter></ContentPresenter>
</CheckBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
<ListBox
Style="{StaticResource CheckBoxListStyle}"
IsEnabled="{Binding Path=SpecificClients.Value, Mode=OneWay}"
ItemsSource="{Binding Path=SelectedClients}"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
ScrollViewer.VerticalScrollBarVisibility="Auto"
MaxHeight="95">
</ListBox>
Dans le modèle Voir je donne les résultats suivants:
public IEnumerable<SelectedClientVM> SelectedClients
....
public class SelectedClientVM
{
public bool IsSelected { get; set; }
public Client Client { get; set; }
public override string ToString()
{
return Client.SearchText;
}
}
thanx dude. Ça l'a cloué. Ça me rendait fou. J'ai essayé de lier ListBoxItem dans un modèle de données, ou d'utiliser RelativeAncestor, et rien de tout cela n'a fonctionné. Je n'ai jamais pensé à utiliser un modèle de données pour le type de machine virtuelle que j'utilisais, mais maintenant que je vois cela ... cela semble évident. – Keith
Bien, heureux que cela a résolu pour vous. Pour moi, c'était vraiment un moment où j'allumais l'ampoule une fois que j'ai enveloppé mon cerveau autour du modèle. –