内容更改后检查TextBlock的宽度

时间:2015-08-19 09:25:38

标签: c# wpf

我有一些TextBlock,可以显示很长的字符串。

但是,当TextBlock 内容 width变得大于TextBlock拥有width时,我想删除部分内容并放置“ ......“最后改为。

我会将完整内容显示为TooTtip

<TextBlock Text="{Binding Path=MyValue}" TextAlignment="Right" FontWeight="Bold" ToolTip="{Binding MyValue}" />

据我所知,TextBlock没有事件,可以在内容更改后触发。是否有任何好方法可以在TextBlock上监听contentChanged事件,计算文本宽度,与控件宽度进行比较以及切割不适合的部分内容?

我需要在codebehind中执行此操作,因为viewmodel无法更改某些无关紧要的原因。

1 个答案:

答案 0 :(得分:2)

您可以使用TextTrimming:

https://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.texttrimming(v=vs.110).aspx

<TextBlock Text="{Binding Path=MyValue}" 
TextAlignment="Right" FontWeight="Bold" 
ToolTip="{Binding MyValue}" 
TextTrimming="WordEllipsis" />

或者你可以在codebehind中设置它:

myTextBlock.TextTrimming = TextTrimming.CharacterEllipsis;