2014-11-24 65 views
0

如果文本框中的文本超過了最大寬度,那麼我有下面的文本框控件,那麼我們應該顯示工具提示。當文本超過文本框中的最大寬度時顯示工具提示

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

請注意,我不想使用文本框的包裹。 我該怎麼做?

回答

1

這可以通過手動測量最大尺寸的文本框並將所需尺寸與實際尺寸進行比較。我在textChanged事件的TextBox中添加了以下代碼,並且它工作正常。

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.

+0

我綁這一點,但提示是可見的(無ocntent內),即使有較少的文本在文本框內。 – user2408987 2014-12-23 09:32:27

0

我想你想使用TextBox.GetRectFromCharacterIndex,這將給你一個Rect其中寬度是文本的寬度。

只要綁定文本發生變化,您就可以計算矩形並獲取動態寬度。您可以比較文本框的寬度和寬度,並查看文本是否過長,並基於該文本設置工具提示。 (考慮檢查,如果你只需要在寬度,或者還需要考慮填充和邊距)

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

相關問題