簡體   English   中英

當文本超過文本框中的最大寬度時顯示工具提示

[英]display tooltip when text exceeds max width in the textbox

我具有以下文本框控件,如果文本框中的文本超過最大寬度,則我們應該顯示工具提示。

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

請注意,我不想使用文本框的環繞。 我怎樣才能做到這一點?

可以通過手動測量具有最大大小的文本框,然后將“所需大小”與“實際大小”進行比較來實現。 我在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);
        }
    }

有關更多細節。

我認為您想使用TextBox.GetRectFromCharacterIndex ,它將為您提供Rect ,其中width是文本的寬度。

只要綁定的文本發生更改,您就可以計算矩形並動態獲取寬度。 您可以將寬度與TextBox的寬度進行比較,查看文本是否過長,並根據該文本設置工具提示。 (考慮是否只需要寬度,或者還需要考慮填充和邊距)

這是我的資料來源: http : //dedjo.blogspot.de/2007/03/text-length-measurement-it-really-easy.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM