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

标签 wpf listview datagrid listbox

我有一个应用程序可以显示体育联盟的排名表。这些表格基本上是具有不同列的网格,代表每支球队的统计数据,例如比赛、获胜、失利、进球数和进球数等。因此,联赛表有一个有趣的属性:对于给定的比赛,我们总是有相同的数量行(代表团队)。由于 WPF 控件是无外观的,我可能可以直接使用 ListBox、ListView、ItemsControl,甚至是 DataGrid。应该没有那么重要。

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

我可以轻松地使用 UniformGrid 来实现非垂直滚动部分。然而,调整字体大小似乎并不那么容易。

当然还有 ViewBox,它允许每个表格单元格的内容单独调整自己的大小以使其尽可能大,但这可能会导致丑陋,因为您最终会得到一堆大小不同的单元格。

我不希望得到一个简单的答案,但如果可能的话,我很想听听。总之:

  • 表格应随窗口调整大小,同时始终显示没有滚动条的所有数据。
  • 字体大小应设置为最大可能大小,以允许每一行的每一列显示其所有内容。
  • 所有列的大小都应调整为允许所有内容可见的最小可能大小,除了一列执行“*-sizing”以占用剩余空间。

  • 所以..有什么聪明的方法可以做到这一点? :)

    最佳答案

    它可以满足您的需求,使窗口的子元素成为 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/

    相关文章:

    WPF 样式触发器 TemplateBinding

    android - 如何在 ListView 中实现表格布局

    c# - DataGridTemplateColumn 中的复选框出现问题

    .net - 如何检索 ItemsControl 中项目的 DataTemplate(和特定对象)?

    c# - 在 UI 线程上创建和启动任务

    c# - 无法在另一个 Datagrid 的 RowDetailsTemplate 中跟踪 DataGrid 的 SelectedItem

    Android:更改 ListView 内的 TextView 的文本?

    android - ListView 隐藏在 ToolBar 后面,Floating action button 隐藏在 ListView 后面

    javascript - 使用自定义 Backbone 集合构建 fuelux datagrid 数据源

    Javascript 自动数据网格重新加载