电子商务网站建设的一般,wordpress用户密码,做算法题网站,做海鱼的网站大家可能在项目中#xff0c;有的时候#xff0c;由于显示的内容过长#xff0c;所以#xff0c;需要显示一部分内容#xff0c;然后后面用省略号#xff0c;把鼠标放上去#xff0c;会显示出来全部的内容。 作为一个LowB程序员的我#xff0c;第一反应是SubString截取…大家可能在项目中有的时候由于显示的内容过长所以需要显示一部分内容然后后面用省略号把鼠标放上去会显示出来全部的内容。 作为一个LowB程序员的我第一反应是SubString截取然后替换然后ToolTip显示原有的内容。 我相信很大一部分的初级程序员第一想法也是这个然而这种方法不具有一个通用型当然有的童鞋可能说写个函数然后设置传递的参数这样不就可以了吗 事实上这样也是很不方便的。 本文的重点来了 昨天在项目里发现了同事写的一个很棒的附加属性今天把它共享出来供大家学习。 在此先感谢那位同事虽然不知道谁写的没有备注但是真的很棒。 代码不难但是效果确实不错先看下效果。 由于是一个可变的长度所以不是用传统的一个截取的方法而是根据TextBlock外部的宽度自动实现的截取效果而且感觉系统的这种还挺有意思。 可以看到第一行前面是文字后面是数字“我是测试长度1111111111111111111111111”直接从数字部分往后都用了省略号而不是必须到了最外层的边缘才进行的截取。 第二行由于后面是文字到了最外层的宽度才用省略号进行了替换。 代码如下 public class TextBlockToolTip{public static bool GetAutoTooltip(DependencyObject obj){return (bool)obj.GetValue(AutoTooltipProperty);}public static void SetAutoTooltip(DependencyObject obj, bool value){obj.SetValue(AutoTooltipProperty, value);}// Using a DependencyProperty as the backing store for AutoTooltip. This enables animation, styling, binding, etc...public static readonly DependencyProperty AutoTooltipProperty DependencyProperty.RegisterAttached(AutoTooltip, typeof(bool), typeof(TextBlockToolTip), new PropertyMetadata(false,OnAutoTooltipPropertyChanged));private static void OnAutoTooltipPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e){TextBlock textBlock d as TextBlock;if (textBlock null)return;if (e.NewValue.Equals(true)){textBlock.TextTrimming TextTrimming.WordEllipsis;ComputeAutoTooltip(textBlock);textBlock.SizeChanged TextBlock_SizeChanged;}else{textBlock.SizeChanged - TextBlock_SizeChanged;}}private static void TextBlock_SizeChanged(object sender, SizeChangedEventArgs e){TextBlock textBlock sender as TextBlock;ComputeAutoTooltip(textBlock);}private static void ComputeAutoTooltip(TextBlock textBlock){textBlock.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));var width textBlock.DesiredSize.Width;if (textBlock.ActualWidthwidth){ToolTipService.SetToolTip(textBlock, textBlock.Text);}else{ToolTipService.SetToolTip(textBlock, null);}}} 测试代码如下 就是把附加属性AutoToolTip设置为True就可以了。 希望这个附加属性可以对你们有所帮助。 转载于:https://www.cnblogs.com/ZXdeveloper/p/7283647.html