3

我正在尝试在包含一些示例数据的列表框上添加数据模板,但它们似乎对我的 dataTemplate 的列表框项没有影响,以下是使用的代码 -

<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 没有在这里应用,

4

1 回答 1

7

好吧,如果您打开绑定错误信息,那么您会看到

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

如果你有你的ListBoxBind it's ItemSourceto a collection 甚至说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应用罚款。

于 2013-06-15T08:28:12.110 回答