我正在尝试在listbox上添加包含一些示例数据的datatemplatate,但它们似乎对我的dataTemplate的listboxitem没有影响,以下是使用的代码 -
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.Resources>
<DataTemplate x:Key="test1">
<TextBlock Background="Red">
</TextBlock>
</DataTemplate>
</Grid.Resources>
<ListBox ItemTemplate="{StaticResource test1}">
<ListBoxItem>A</ListBoxItem>
<ListBoxItem>B</ListBoxItem>
<ListBoxItem>C</ListBoxItem>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" ></StackPanel>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</Grid>
</Page>
listboxitem的背景并没有变成红色,我知道我可以使用itemcontainerstyle实现类似的功能,但想知道为什么没有在这里应用datatemplate,
答案 0 :(得分:7)
如果您打开了绑定错误信息,那么您将看到
System.Windows.Data Error: 26 : ItemTemplate and ItemTemplateSelector are ignored for items already of the ItemsControl's container type; Type='ListBoxItem'
如果你有ListBox
将ItemSource
绑定到一个集合,即使是List<string> MyStrings
,例如
<ListBox ItemTemplate="{StaticResource test1}"
ItemsSource="{Binding MyStrings}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
和DataTemplate
<DataTemplate x:Key="test1">
<TextBlock Background="Red"
Text="{Binding .}" />
</DataTemplate>
然后你会看到你的DataTemplate
被罚款。