AnthonyWJones правильно считает, что Wrap Panel - это хороший подход, но Кент столкнулся с проблемой демонстрации того, как можно использовать ItemSource (хотя и со StackPanel, которая не достигает цели). Поэтому я выложу код, который демонстрирует декларативный эквивалент:
<ItemsControl x:Name="myItems" Width="300">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<controls:WrapPanel x:Name="itemsWrapPanel" Margin="0" Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="100">
<CheckBox IsChecked="{Binding MyCheckedProperty, Mode=TwoWay}" x:Name="IsSelectedCheckBox" Height="25"></CheckBox>
<TextBlock Height="12" Text="{Binding MyTextProperty}" Margin="0" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Небольшая ошибка в том, что DataTemplate ожидает одного дочернего элемента, поэтому использование StackPanel с горизонтальной ориентацией обеспечивает непрерывность работы.