Definitivamente el uso de una unión
Si las casillas de verificación no están relacionados y son por todo el lugar, tendrá 20 propiedades de dependencia diferentes que se unen a en su DataContext o modelo de vista
Si sus casillas están todos juntos , tal como aparece uno tras otro o en una cuadrícula, puede ponerlos en una colección y se unen a ellos un ItemsControl
<ItemsControl ItemsSource="{Binding Options}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Description}"
IsChecked="{Binding IsChecked}" />
</DataTemplate>
</ItemsControl>
</ItemsControl>
Su modelo de vista o DataContext contendría algo como esto:
private List<Option> options;
private List<Option> Options
{
get
{
if (options== null)
{
options = new List<Option>();
// Load Options - For example:
options.Add(new Option { Description = "Option A", IsChecked = false });
options.Add(new Option { Description = "Option B" });
options.Add(new Option { Description = "Option C", IsChecked = true});
}
return options;
}
}
Y tu clase Option
sería simplemente
public class Option
{
public string Description { get; set; }
public bool IsChecked { get; set; }
}
+1 - aunque prefiero usar IsSelected; IsChecked implica que el objeto siempre estará vinculado a una casilla de verificación (o similar). –