0

我什么都试过了

解决方案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不会显示。

有什么建议么?

4

0 回答 0