【问题标题】:WPF DataGrid with variable row heights具有可变行高的 WPF DataGrid
【发布时间】:2011-10-09 11:41:06
【问题描述】:

我正在以编程方式创建一个 DataGrid,并且需要行高是可变的,以便具有多行文本的行具有很大的高度来容纳额外的行。

我尝试在代码中设置 RowHeight 属性,但这需要一个固定值。如果我不设置 RowHeight,它只会使用一个任意值,如果文本不合适,它不会扩展。

我还想让我的 DataGrid 内容可缩放,因此如果调整 DataGrid 的大小,实际的单元格也会调整大小,包括单元格内的字体。我可以为此使用 Viewbox,但我遇到了 Viewbox 的问题,因为它不会增长以适应文本,它会逃避/扩展文本以适应它。

也许我需要在调整大小时遍历所有行和列并手动设置 height 属性。

【问题讨论】:

    标签: wpf datagrid


    【解决方案1】:

    Tom 对这个问题的很好回答 - 刚刚非常有用。如果你想完全在 Xaml 中实现这一点,而不需要代码,你可以在 DataGrid 声明中添加以下属性RowHeight="{x:Static sys:Double.NaN}"

    要在此处识别“sys”命名空间,您必须将xmlns:sys="clr-namespace:System;assembly=mscorlib" 添加到 Xaml 文件顶部的 xmlns 声明中。

    【讨论】:

    • 感谢@pandrew 提供 XAML 版本。效果很好。
    【解决方案2】:

    试试这个:

    在 Window 的构造函数中,执行以下操作:

    dataGrid.RowHeight = double.NaN;
    

    【讨论】:

    • 我如何在后面的代码中做到这一点。它没有看到 DataGridView。数据网格 myDataGrid = new DataGrid(); // 做一些事情来自定义 myDataGrid parentGrid.Children.Add(myDataGrid);
    • 您不必在后面的代码中执行此操作。在设计模式下,单击您的 DataGridView,转到属性窗口,搜索 AutoSizeRowsMo​​de,然后将其设置在那里。
    • 我唯一得到的是 AutoGenerateColumns,但这是在 DataGrid 上。它告诉我 DataGridView 无法识别。
    • 可能在这里看到了问题,我在使用 Windows 窗体时看到了对 DataGridView 的引用,但没有看到我正在使用的 WPF。
    • 对不起.. 我误读了你的问题。我进行了编辑以包含更相关的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 2015-10-07
    • 2013-03-07
    相关资源
    最近更新 更多