日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF--TextBlock的ToolTip附加属性

發布時間:2023/12/10 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF--TextBlock的ToolTip附加属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家可能在項目中,有的時候,由于顯示的內容過長,所以,需要顯示一部分內容,然后后面用省略號,把鼠標放上去,會顯示出來全部的內容。

作為一個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.ActualWidth<width){ToolTipService.SetToolTip(textBlock, textBlock.Text);}else{ToolTipService.SetToolTip(textBlock, null);}}}

測試代碼如下:

就是把附加屬性AutoToolTip設置為True就可以了。

希望這個附加屬性可以對你們有所幫助。

?

轉載于:https://www.cnblogs.com/ZXdeveloper/p/7283647.html

總結

以上是生活随笔為你收集整理的WPF--TextBlock的ToolTip附加属性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。