我正在将一个TextBlock包装在一个Viewbox中,正如StackOverflow上的一些答案所示,这就像我想要的那样呈现。但经过一些研究后,我明白这会妨碍性能,特别是当你有大量使用这种方法的TextBlock时。
在Silverlight中有更好的方法吗?
注意:只要我能显示文字,我就不介意使用TextBlock以外的东西。
答案 0 :(得分:1)
// Event handler
private void ControlsSizeChanged(object sender, System.Windows.SizeChangedEventArgs e)
{
GetFontSize(sender as Control);
}
// Method for font size changes
public static void GetFontSize(Control control)
{
PropertyInfo info;
if (control == null || control.ActualHeight <= 0)
return;
if(( info = control.GetType().GetProperty("FontSize", typeof(double))) != null)
{
info.SetValue(control, 0.7 * control.ActualHeight, null);
}
}
没有ViewBox只涉及魔法计算。线程中还有其他建议,例如更改字体大小和测量几次,直到文本适合。