我有以下文本框控件,如果文本框中的文本超出最大宽度,那么我们应该显示工具提示。
<TextBox Name="ClientAgreementNumberHCCText"
TextAlignment="Left"
TextWrapping="NoWrap"
Text=" {Binding Text,Mode=OneWay}"/>
请注意,我不想使用文本框的包装。 我怎么能这样做?
答案 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);
}
}
答案 1 :(得分:0)
我认为您要使用TextBox.GetRectFromCharacterIndex,它会为您提供Rect,其宽度为文字的宽度。
只要绑定文本发生更改,您就可以计算矩形并获得动态宽度。您可以比较TextBox的宽度和宽度,并查看文本是否太长,并根据设置工具提示。 (考虑检查您是否只需要宽度,还是需要考虑填充和边距)
这是我的来源:http://dedjo.blogspot.de/2007/03/text-length-measurement-it-really-easy.html