Вы, вероятно, хотите ItemsControl. Это позволяет вам представить серию элементов, используя указанный шаблон данных. Вы можете сделать это встроенным в ItemsControl:
<ItemsControl ItemsSource="{Binding MyCollectionOfItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding NameOfTheCheckedPropertyOnEachItem}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
или ссылаться на шаблон данных явно из ресурса ... что-то вроде:
<!-- In some parent resource section -->
<DataTemplate x:Key="MyDataTemplateName">
<CheckBox IsChecked="{Binding NameOfTheCheckedPropertyOnEachItem}"/>
</DataTemplate>
<!-- ... -->
<ItemsControl ItemsSource="{Binding MyCollectionOfItems}" ItemTemplate="{StaticResource MyDataTemplateName}">
</ItemsControl>
Или вы можете определить DataTemplate, который определяет внешний вид вашего связанного класса. (Обратите внимание, что если ваш Linq-to-SQL проецируется в анонимный тип, это не вариант) Что-то вроде:
<!-- In some parent resource section -->
<DataTemplate DataType="{x:Type MyBoundClass}">
<CheckBox IsChecked="{Binding NameOfTheCheckedPropertyOnEachItem}"/>
</DataTemplate>
<!-- ... -->
<ItemsControl ItemsSource="{Binding MyCollectionOfItems}">
</ItemsControl>
Затем WPF будет искать шаблон данных, соответствующий типу данных каждого из элементов вашей коллекции. Обратите внимание, что это может быть ОЧЕНЬ полезно для связывания разнородных коллекций, которые нуждаются в разных презентациях.
Вы МОЖЕТЕ связать DataContext панели стека, но нет никакой логики повторения шаблона для каждого элемента данных. Он просто предоставляет контекст для дочерних элементов управления и содержит {Binding ...}
операторов. Все элементы управления, которые обрабатывают повторяющиеся данные, происходят из ItemsControl и передают свои данные через свойство ItemsSource.