这是我的itemsControl
:
<ItemsControl x:Name="MessagesContainer">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding MessageText}" />
<TextBlock Text="{Binding MessageCreatedDate}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我想访问前3个项目(即前3个stackPanel)来改变他们的背景颜色,所以我尝试了下面的ItemContainerGenerator
:
for (int i = 0; i < 3; i++)
{
UIElement uiElement =
(UIElement)MessagesContainer.ItemContainerGenerator.ContainerFromIndex(i);//<-- always null
}
但uiElement
总是有null
值,而我的itemsControl绑定得很好
有任何想法吗 ?或从itemsControl
获取特定项目的任何其他方式?