我有一个带有DataTemplate的ItemsControl,它绑定到整数的ObservableCollection。
<ItemsControl Name="DimsContainer" ItemTemplate="{StaticResource DimensionsTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
在Windows资源中:
<Window.Resources>
<DataTemplate x:Key="DimensionsTemplate" >
<TextBlock Text="{Binding}"
Padding="5"
VerticalAlignment="Center"
FontSize="32"/>
</DataTemplate>
</Window.Resources>
我的问题是,在代码中,我需要能够在ItemsControl中确定TextBlocks的宽度(或者如果我稍后更改它,那么该元素是什么)。有没有人知道如何做到这一点?
当我做DimsContainer.Items [i]时,它给了我绑定项而不是TextBlock。
答案 0 :(得分:4)
您应该可以使用:
DimsContainer.ItemContainerGenerator.ContainerFromIndex(i);
这不会给你TextBlock本身,但它会给你生成的ContentPresenter,它被ItemsControl包围,包含ItemTemplate。