ItemsControl中项目的宽度

时间:2010-08-20 20:05:12

标签: c# wpf c#-4.0 itemscontrol

我有一个带有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。

1 个答案:

答案 0 :(得分:4)

您应该可以使用:

DimsContainer.ItemContainerGenerator.ContainerFromIndex(i);

这不会给你TextBlock本身,但它会给你生成的ContentPresenter,它被ItemsControl包围,包含ItemTemplate。