视频介绍了一个方案,可以判断TextBlock复杂的内容(包含Run/Span等inline标签)情况下是否显示省略号/是否被截取/截断,主要代码
public class TextBlockEx:TextBlock
{
/// <summary>
/// 当前文字是否被截取
/// </summary>
public bool IsTextTrimmed
{
get { return (bool)GetValue(IsTextTrimmedProperty); }
private set { SetValue(IsTextTrimmedProperty, value); }
}
// Using a DependencyProperty as the backing store for IsTextTrimming. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsTextTrimmedProperty =
DependencyProperty.Register("IsTextTrimmed", typeof(bool), typeof(TextBlock), new PropertyMetadata(false));
protected override Geometry GetLayoutClip(Size layoutSlotSize)
{
IsTextTrimmed = GetIsTrimming();
return base.GetLayoutClip(layoutSlotSize);
}
bool GetIsTrimming()
{
if (TextTrimming ==