WPF - Datatemplate未在listbox itemtemplate中应用

时间:2013-06-15 08:19:34

标签: .net wpf

我正在尝试在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,

1 个答案:

答案 0 :(得分:7)

如果您打开了绑定错误信息,那么您将看到

System.Windows.Data Error: 26 : ItemTemplate and ItemTemplateSelector are ignored for items already of the ItemsControl's container type; Type='ListBoxItem'

如果你有ListBoxItemSource绑定到一个集合,即使是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被罚款。