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

Windows应用商店应用程序-C#-TextBlock检查文本是否已修剪,c#,windows-store-apps,textblock,C#,Windows Store Apps,Textblock,在TextBlock类中,当文本超出控件的边界时,有一个属性用于设置控件的texttiming行为 但是,我似乎找不到一个属性可以通知我的应用程序TextBlock是否已被修剪 我的问题是,我有一个固定大小的TextBlock,它可以使文本超过大小。发生这种情况时,我希望动态调整字体大小,使文本适合块 你知道我该怎么做吗 伪码 // Function added to TextBlock as SizeChanged event handler. private void textBlock_

TextBlock
类中,当文本超出控件的边界时,有一个属性用于设置控件的
texttiming
行为

但是,我似乎找不到一个属性可以通知我的应用程序
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

以下是一个有效的解决方案

    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;
                }
            }
        }
    }
private void textBlock\u SizeChanged(对象发送方,sizechangedventargs e)
{
TextBlock tb=发送方为TextBlock;
如果(tb!=null)
{
Grid parent=tb。Grid parent为Grid;
如果(父项!=null)
{
if(parent.ActualWidth

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

将文本块放入一个视图框中,它将根据需要缩小以适应需要。