Vous devriez probablement éviter créer des cases à cocher dans un code comme celui-ci. Quelque chose qui pourrait vous être utile est un mini "ViewModel" pour la case à cocher. Quelque chose comme ceci:
public class Option
{
public string Text {get; set;}
public bool IsChecked {get; set;}
}
Ensuite, vous pouvez avoir une collection de ces options comme celle-ci:
var options = new ObservableCollection<Option>();
Une fois que cela est rempli, vous pouvez lier le ObservableCollection à un ItemsControl:
<ItemsControl ItemsSource="{Binding options}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Text}" IsChecked="{Binding IsChecked}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
XAML créera les CheckBox pour vous pour toujours option que vous avez ajouté à votre collection d'options. La chose vraiment grande est que vous pouvez maintenant vous demander des options collection options qui ont été sélectionnées:
var selectedNames = from option in options
where option.IsChecked
select option.Text;
En utilisant la liaison de données et des modèles est une technique que vous devez vous familiariser avec Silverlight/WPF. C'est un concept très important, et il vous permettra de faire des choses incroyables dans votre application.
J'hésiterais à suggérer un ListBox ici. L'OP est en train de peupler un StackPanel et un ListBox est une bête beaucoup plus grande avec un comportement de sélection et de survol qui n'est pas voulu ici. A la place, un ItemsControl est une construction beaucoup plus appropriée à utiliser pour @Manoj. –