调整WPF列表或网格中的字体大小以正确使用空间

Run*_*sen 5 wpf datagrid listview listbox

我有一个应用程序,显示体育联盟的排名表.这些表基本上是不同列的网格,代表每个团队的统计数据,如比赛,赢,输,得分和得分等.因此,联赛表有一个有趣的属性:对于给定的比赛,我们总是有相同的数量行(代表团队).由于WPF控件是无形的,我可能直接使用ListBox,ListView,ItemsControl,甚至是DataGrid.不应该那么重要.

但是,我想要一些我尚未实现的东西:给定表大小(实际上,窗口的大小),所有团队应始终可见(无垂直滚动),所有统计列(如由用户选择)应该是可见的,并且字体大小应该反映这一点,以便它尽可能大,而没有任何列变得太大而内容不适合.

我可以轻松地使用UniformGrid来实现无垂直滚动的部分.但是,调整字体大小似乎并不那么容易.

当然还有ViewBox,它允许每个表格单元格的内容单独确定其大小,但这可能会导致丑陋,因为最终会出现一堆不同大小的单元格.

我不希望得到一个简单的答案,但如果可能的话,我很乐意听到它.综上所述:

  1. 表应该使用窗口调整大小,同时始终显示没有滚动条的所有数据.

  2. 字体大小应设置为最大可能的大小,允许每行的每列显示其所有内容.

  3. 所有列的大小应尽可能小,以允许所有内容可见,除了一列执行"*-sizing"以占用剩余空间.

那么......有什么聪明的方法吗?:)

Dan*_*att 7

它是否适合你需要的东西使窗口的子元素成为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>
Run Code Online (Sandbox Code Playgroud)

整个内容始终可见,最大可能的字体大小.所有文本均匀缩放.