我什么都试过了
解决方案1:https ://siderite.dev/blog/determining-if-textblock-has-been.html
解决方案2:http: //blog.scottlogic.com/2011/01/31/automatically-showing-tooltips-on-a-trimmed-textblock-silverlight-wpf.html
我的解决方案:
<TextBlock.ToolTip>
<MultiBinding Converter="{StaticResource ToolTipVisibilityWhenTextTrimmedConverter}">
<Binding ElementName="mytextblock" Path="Text"/>
<Binding ElementName="mytextblock"/>
<Binding ElementName="mytextblock" Path="MaxWidth"/>
</MultiBinding>
</TextBlock.ToolTip>
和
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var text = values[0];
TextBlock tb = (TextBlock)values[1];
var maxwidth = values[2];
var result = CommonMethods.MeasureString(tb);
bool isTextTrimmed = result.Width > (double)maxwidth;
var retval = (isTextTrimmed) ? text : null;
return retval;
}
但是当TextBlock
宽度非常接近修剪时,仍然ToolTip
会显示。有时,当最后 2 个字符被修剪时,ToolTip
不会显示。
有什么建议么?