WPF DataGrid 可变行高

10

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

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

我还希望我的DataGrid内容可缩放,因此如果调整DataGrid大小,则实际单元格大小也会发生变化,包括单元格内部的字体。我可以使用Viewbox实现这一点,但我遇到了Viewbox问题,因为它不能随着文本增长而增长,它会压缩/扩展文本以适应其中。

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

2个回答

15

Tom给出了关于这个问题很好的答案 - 现在非常有用。如果你想纯粹使用Xaml而没有后台代码来完成这个问题,你可以在DataGrid声明中添加以下属性RowHeight="{x:Static sys:Double.NaN}"

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


感谢@pandrew提供XAML版本。运行得很好。 - Alex

11

试试这个:

在您的窗口构造函数中,执行以下操作:

dataGrid.RowHeight = double.NaN;

我该如何在代码后台实现这个?它无法识别DataGridView。 DataGrid myDataGrid = new DataGrid(); // 对myDataGrid进行自定义处理 parentGrid.Children.Add(myDataGrid); - WPFNewbie
你不必在代码后台完成它。当处于设计模式时,点击你的DataGridView,进入属性窗口,搜索AutoSizeRowsMode,并在那里设置即可。 - Tom Studee
我阅读了那个主题,但它只涉及到列标题和将空格替换为换行符。我正在使用带有自动换行的TextBlock,它确实处理了单词换行,但每一行都是相同的大小。这导致我的单词换行行在第二行剪切文本底部。如果我只是使行高大于它对于单行文本来说是不必要的。我可能会有多达4或5行的文本,因此我需要网格行根据需要调整大小。 - WPFNewbie
你有关于在DataGrid上使用Viewbox或其他缩放方法的建议吗?最终,我希望能够设置文本行高约为总DataGrid高度的10%(此值可配置)。随着DataGrid的缩小,每行文本将按比例缩小。因此,如果在DataGrid高度为400像素时看到10行,并将DataGrid调整大小为250像素,则仍将看到10行。我认为这不是典型的行为,但这是我们的应用程序所要求的。 - WPFNewbie
@TomStudee 有没有解释为什么 Double.NaN 会将行高设置为自动?! - Dr. Strangelove
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接