Windows应用商店应用 - C# - TextBlock检查文本是否被修剪

时间:2014-07-09 13:23:17

标签: c# windows-store-apps textblock

TextBlock类中,当文本超出控件的范围时,有一个属性可以设置控件的TextTrimming行为。

但是,如果TextBlock已被修剪,我似乎找不到可以通知我的申请的属性。

我遇到的问题是我有一个固定大小的TextBlock,其文本超出了大小。发生这种情况时,我想动态调整字体大小以使文本适合块。

我知道如何做到这一点?

伪代码

// Function added to TextBlock as SizeChanged event handler. 
private void textBlock_SizeChanged(object sender, SizeChangedEventArgs e)
{
    TextBlock textBlock = sender as TextBlock;
    if(textBlock.IsTrimmed && textBlock.FontSize > 10) // NOTE: IsTrimmed Property does not exist.
    {
        textBlock.FontSize -= 10;
    }
}

然后UI线程将以递归方式缩小文本,直到它适合TextBlock

1 个答案:

答案 0 :(得分:0)

这是一个有效的解决方案。

    private void textBlock_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        TextBlock tb = sender as TextBlock;

        if (tb != null)
        {
            Grid parent = tb.Parent as Grid;
            if(parent != null)
            {
                if(parent.ActualWidth < tb.ActualWidth)
                {
                    tb.FontSize -= 10;
                }
            }
        }
    }

虽然效率不高。如果有一个可用于确定字体大小,字符串长度和像素宽度的算法,则可以对其进行改进。