我有一个应用程序可以显示体育联盟的排名表。这些表格基本上是具有不同列的网格,代表每支球队的统计数据,例如比赛、获胜、失利、进球数和进球数等。因此,联赛表有一个有趣的属性:对于给定的比赛,我们总是有相同的数量行(代表团队)。由于 WPF 控件是无外观的,我可能可以直接使用 ListBox、ListView、ItemsControl,甚至是 DataGrid。应该没有那么重要。
但是,我想要一些我还没有实现的东西:给定表格大小(实际上是窗口的大小),所有团队都应该始终可见(没有垂直滚动),所有统计列(如用户选择的)应该是可见的,并且字体大小应该反射(reflect)这一点,以便它尽可能大,而没有任何列变得太大而无法容纳内容。
我可以轻松地使用 UniformGrid 来实现非垂直滚动部分。然而,调整字体大小似乎并不那么容易。
当然还有 ViewBox,它允许每个表格单元格的内容单独调整自己的大小以使其尽可能大,但这可能会导致丑陋,因为您最终会得到一堆大小不同的单元格。
我不希望得到一个简单的答案,但如果可能的话,我很想听听。总之:
所以..有什么聪明的方法可以做到这一点? :)
最佳答案
它可以满足您的需求,使窗口的子元素成为 ViewBox 并将所有内容放入其中吗?我不确定你正在做的事情的细节是否会导致这不起作用,但这是我建议的一个非常简单的例子:
<Window x:Class="ZoomTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1">
<Viewbox>
<StackPanel>
<TextBlock>2</TextBlock>
<TextBlock>Getting longer</TextBlock>
<TextBlock>Here is some really long text...</TextBlock>
</StackPanel>
</Viewbox>
</Window>
整个内容始终可见,并具有最大可能的字体大小。所有文本都统一缩放。
关于wpf - 调整 WPF 列表或网格中的字体大小以正确使用空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/633919/