【问题标题】:How to get text pixel size in DataGridTextColumn如何在 DataGridTextColumn 中获取文本像素大小
【发布时间】:2020-06-29 06:58:02
【问题描述】:
我正在尝试使用 MVVM 模式在 WPF 中的 DataGridTextColumn 中找出文本的像素大小(最大长度),以便我可以设置 DataGridTextColumn 的最小宽度。
谁能帮我解决这个问题?
【问题讨论】:
-
请注意,除非您使用固定宽度的字体,否则 AAAA 将占用与 IIII 不同的空间量,即使两者都是 4 个字符。另请注意,由于kerning,某些字符与前一个或下一个字符之间可能有一个负空格,这意味着它们重叠。如果您要确定可以容纳的最大字符数,您可能应该基于您最宽的字符数。
标签:
c#
wpf
mvvm
datagrid
datagridtextcolumn
【解决方案1】:
您可以使用此方法从字体中获取文本大小:
SizeF GetSizeOfFont(Font font, string text)
{
SizeF size;
using (var graphics = System.Drawing.Graphics.FromImage(new Bitmap(1, 1)))
{
var sty = DataGrid;
size = graphics.MeasureString(text, font);
}
return size;
}
例子:
var font = new Font("Segoe UI", 50, GraphicsUnit.Point);
var size = GetSizeOfFont(font, "Hello World");
var width = size.Width;
var heidht = size.Height;