Silverlight中的动态TextBlock字体大小

时间:2011-12-06 21:41:00

标签: c# silverlight dynamic font-size

我正在将一个TextBlock包装在一个Viewbox中,正如StackOverflow上的一些答案所示,这就像我想要的那样呈现。但经过一些研究后,我明白这会妨碍性能,特别是当你有大量使用这种方法的TextBlock时。

在Silverlight中有更好的方法吗?

注意:只要我能显示文字,我就不介意使用TextBlock以外的东西。

1 个答案:

答案 0 :(得分:1)

From this forum

// 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只涉及魔法计算。线程中还有其他建议,例如更改字体大小和测量几次,直到文本适合。