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

时间:2014-11-24 09:53:41

标签: c# wpf

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

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

请注意,我不想使用文本框的包装。 我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

可以通过手动测量最大尺寸的textBox并将所需尺寸与实际尺寸进行比较来实现。我在TextBox的 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);
        }
    }

More detail on this.

答案 1 :(得分:0)

我认为您要使用TextBox.GetRectFromCharacterIndex,它会为您提供Rect,其宽度为文字的宽度。

只要绑定文本发生更改,您就可以计算矩形并获得动态宽度。您可以比较TextBox的宽度和宽度,并查看文本是否太长,并根据设置工具提示。 (考虑检查您是否只需要宽度,还是需要考虑填充和边距)

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