La propriété IsChecked de Checkbox doit être liée à une autre propriété de l'objet de support pour chaque élément. c'est-à-dire que le type qui a le nom devrait exposer une propriété booléenne IsSelected.
La liaison de données mettra à jour la propriété IsSelected de manière appropriée, ce qui vous facilitera l'accès au code. par exemple. vous pouvez parcourir la liste et filtrer tous les éléments qui ont IsSelected = false.
Exemple de code
XAML
<StackPanel>
<ComboBox ItemsSource="{Binding Items}">
<ComboBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Button Click="EvaluateSelectedItems">Show Selected</Button>
<TextBlock>Selected Items</TextBlock>
<ListBox ItemsSource="{Binding SelectedItems}" DisplayMemberPath="Name" Background="AliceBlue"/>
</StackPanel>
code-behind
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
Items = new List<ItemVM>
{
new ItemVM {IsSelected = false, Name = "Firefox"},
new ItemVM {IsSelected = false, Name = "Chrome"},
new ItemVM {IsSelected = false, Name = "IE"}
};
}
public IEnumerable<ItemVM> Items { get; set; }
private IEnumerable<ItemVM> _selectedItems;
public IEnumerable<ItemVM> SelectedItems
{
get { return _selectedItems; }
set
{
_selectedItems = value;
if (PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs("SelectedItems"));
}
}
private void EvaluateSelectedItems(object sender, RoutedEventArgs e)
{
SelectedItems = Items.Where(item => item.IsSelected);
}
Que voulez-vous dire par "obtenir la valeur du contenu stocké dans la case"? – Osiris76
Je suppose que vous voulez dire que vous avez besoin de tous les noms que l'utilisateur a coché/sélectionné. – Gishu
La valeur textuelle d'une case à cocher est stockée en tant que contenu. –