Вот что вы можете попробовать: ширина строки может быть рассчитана с использованием класса TextFomratter ( при условии, что ваша сетка содержит только текст ), так что вам нужно будет передать способрассчитать ширину самого большого столбца, который можно вычислить с помощью привязки - RelativePath и т. д.
private Size MeasureString(string candidate)
{
var formattedText = new FormattedText(
candidate,
CultureInfo.CurrentCulture,
FlowDirection.LeftToRight,
new Typeface(this.textBlock.FontFamily, this.textBlock.FontStyle, this.textBlock.FontWeight, this.textBlock.FontStretch),
this.textBlock.FontSize,
Brushes.Black,
new NumberSubstitution(),
1);
return new Size(formattedText.Width, formattedText.Height);
}
Вы можете использовать приведенный выше код с MultiConverter , чтобы получить ссылку народительский объект Grid, который вы можете использовать с forloop для вычисления максимальной ширины в текущий момент времени, оттуда вам может потребоваться обновить все столбцы с новой шириной столбца.
Возможно, вам понадобится text + Gridродительский объект в качестве параметров для мультиконвертера.