Динамический размер шрифта TextBlock в Silverlight - PullRequest
3 голосов
/ 07 декабря 2011

Я в настоящее время оборачиваю свой TextBlock в Viewbox, как предложено несколькими ответами здесь, в StackOverflow, и это отображается так, как я хочу. Но после небольшого исследования я понимаю, что это снижает производительность, особенно когда у вас есть приличное количество TextBlocks, которые используют этот подход.

Есть ли лучший способ сделать это в Silverlight?

Примечание: Я не против использования чего-либо, кроме TextBlock, если я могу отображать текст.

1 Ответ

1 голос
/ 07 декабря 2011

С этого форума

// 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);
    }
}

Никакие ViewBoxes не задействованы, просто магический расчет.В ветке есть и другие предложения, такие как изменение размера шрифта и измерение пары раз, пока текст не уместится.

...