当文本超过文本框中的最大宽度时显示工具提示

本文关键字:文本 显示 工具提示 | 更新日期: 2023-09-27 18:31:52

>我有下面的文本框控件,如果文本框中的文本超过最大宽度,那么我们应该显示工具提示。

<TextBox Name="ClientAgreementNumberHCCText" 
                         TextAlignment="Left" 
                         TextWrapping="NoWrap" 
                         Text=" {Binding Text,Mode=OneWay}"/>

请注意,我不想使用文本框的换行。我该怎么做?

当文本超过文本框中的最大宽度时显示工具提示

这可以通过手动测量具有最大大小的文本框并将所需大小与实际大小进行比较来实现。我在文本框的 textChanged 事件中添加了以下代码,它工作正常。

    private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        textBox.Measure(new Size(Double.MaxValue, Double.MaxValue));
        var width = textBox.DesiredSize.Width;
        if (textBox.ActualWidth < width)
        {
            ToolTipService.SetToolTip(textBox, textBox.Text);
        }
        else
        {
            ToolTipService.SetToolTip(textBox, null);
        }
    }

有关此的更多详细信息。

我想你想使用TextBox.GetRectFromCharacterIndex,它会给你一个Rect,其中宽度是文本的宽度。

您可以计算矩形,并在绑定文本更改时动态获取宽度。您可以将宽度与文本框的宽度进行比较,看看文本是否太长,并在此基础上设置工具提示。 (考虑检查是否只需要宽度,或者还需要考虑填充和边距)

这是我的来源:http://dedjo.blogspot.de/2007/03/text-length-measurement-it-really-easy.html