0

我有一个列表视图,它可以包含 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>

这可以包装每个项目,但底部项目会从屏幕上消失。我不希望这发生

4

1 回答 1

0

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

在 a 内部Panel,或者更具体地说, the 的ArrangeOverride方法Panel是您可以检测到项目已到达可用空间底部的少数几个地方之一。虽然创建自定义Panel不是太难,但也不是一件容易的事。如果您选择这样做,您可以查看以下链接之一,以便更好地了解这是如何完成的:

如何在 WPF 中创建自定义布局面板

在 WPF 中创建自定义面板

于 2013-10-25T12:22:44.953 回答