你可能想要一個ItemsControl。這允許您使用指定的DataTemplate呈現一系列項目。你可以這樣做內聯的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到SQL是伸入一個匿名類型,這不是一個選項)喜歡的東西:
<!-- In some parent resource section -->
<DataTemplate DataType="{x:Type MyBoundClass}">
<CheckBox IsChecked="{Binding NameOfTheCheckedPropertyOnEachItem}"/>
</DataTemplate>
<!-- ... -->
<ItemsControl ItemsSource="{Binding MyCollectionOfItems}">
</ItemsControl>
WPF然後將尋找每一個項目的數據類型相匹配一個DataTemplate在你的收藏。請注意,這對綁定需要不同演示文稿的異構集合非常有幫助。
您可以綁定Stackpanel的DataContext,但沒有爲每個數據元素重複模板的內在邏輯。它只是爲子控件提供一個上下文,幷包含{Binding ...}
陳述。處理重複數據的所有控件都從ItemsControl中下載並通過ItemsSource屬性獲取其數據。
+1好,徹底的答案。 – 2010-03-11 15:09:37