Autosize Font&在Listview中换行文本

时间:2013-10-25 11:55:53

标签: wpf listview autosize wrappanel

我有一个列表视图,可以包含介于1和1之间的任何地方。 10项文字。 ListView必须包含在特定大小的网格中。

我希望每个项目能够包装到另一行(我可以正常工作)但当项目最终到达网格区域的底部时,我希望项目在字体中调整大小,保持包装的文本和放大器;不允许滚动。

我可能会对WPF提出太多要求或者没有很好地解释这一点。

    <ListView Name="lvWrap" ItemsSource="{Binding Directions}" Style="{DynamicResource ListViewStyle1}" FontSize="29">
        <ListView.ItemTemplate>
            <DataTemplate>
                <DockPanel Name="MainGrid" HorizontalAlignment="Stretch">
                    <TextBlock Text="{Binding}" TextWrapping="Wrap"/>
                </DockPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

这包装好每件物品,但是底部物品在屏幕外消失。我不希望这种情况发生

1 个答案:

答案 0 :(得分:0)

你没有要求太多...... WPF可以做任何事情。但是,你 要求很多,而且很可能,这里的用户太多了。我可以想象您能够达到要求的唯一方法是实现自定义Panel并将其设置为ListView.ItemsPanel

Panel内部,或更具体地说,ArrangeOverride的{​​{1}}方法是您可以检测到项目已到达可用空间底部的少数几个地方之一。虽然创建自定义Panel并不太困难,但它也不是一项琐碎的任务。如果您选择这样做,您可以查看以下链接之一,以便更好地了解如何完成此操作:

How to create a Custom Layout Panel in WPF

Creating Custom Panels In WPF