我有一个列表视图,可以包含介于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>
这包装好每件物品,但是底部物品在屏幕外消失。我不希望这种情况发生
答案 0 :(得分:0)
你没有要求太多...... WPF可以做任何事情。但是,你 要求很多,而且很可能,这里的用户太多了。我可以想象您能够达到要求的唯一方法是实现自定义Panel
并将其设置为ListView.ItemsPanel
。
在Panel
内部,或更具体地说,ArrangeOverride
的{{1}}方法是您可以检测到项目已到达可用空间底部的少数几个地方之一。虽然创建自定义Panel
并不太困难,但它也不是一项琐碎的任务。如果您选择这样做,您可以查看以下链接之一,以便更好地了解如何完成此操作: