为什么在ItemsControl模板中的TextBlock周围需要边框才能使TextBlock换行?

时间:2012-08-15 18:53:35

标签: wpf templates itemscontrol textblock wrapping

我在找到this question的同时试图找出如何制作TextBlock换行,当TextBlock是ItemsControl中每个项目的模板时。

我原来的模板:

<ItemsControl.ItemTemplate>
    <DataTemplate>
        <Grid>
            <TextBlock Padding="2" x:Name="SummaryRow" Text="{Binding}" TextWrapping="Wrap" />
        </Grid>
    </DataTemplate>
</ItemsControl.ItemTemplate>

为了使文本实际换行,我不得不用边框包围TextBlock。我相信其他容器也会起作用。

这是为什么? (顺便说一句我应该提到ItemsControl在ScrollViewer中)

1 个答案:

答案 0 :(得分:2)

对于要包装的文本,您需要restrict the size of the textBlock以便在文本超出限制限制时包装文本。但是由于你的textBlock外面有scrollViewer,它的大小没有任何重复,因此没有换行。您需要设置HorizontalScrollBarVisbility to Collapsed or Hidden以限制大小,从而限制文本。