我试图在文本更改后获取TextBlock的ActualHeight。此文本可能在同一页面上多次更改,这意味着我的页面上的Loaded方法只会被触发一次..
获取Page Loaded方法中的值工作正常,但仅限第一次。如果我更改了文本块的文本,则无法获得新的实际高度。
到目前为止我尝试过:
TextBlock.Measure(new Size()); TextBlock.Arrange(new Rect());
强制控件排列并获取ActualHeight(问题:如果我的文本块通过wrap或\ n标签分成多行,则不会考虑这一点。这意味着它将会总是返回1行高度文本块的值)我在想是否有办法在每次设置它的值时重新加载Textblock
,这样我就可以通过TextBlock的Loaded方法获得实际高度。但是在Windows Phone App中似乎没有.Refresh()方法。
在我将文本设置为新值后,有没有人知道如何获得包括换行符在内的实际高度?
答案 0 :(得分:1)
订阅SizeChanged事件。它恰好是您提供的用例。
MSDN Documentation - TextBlock Events, SizeChanged Event
只要TextHlock元素的ActualHeight或ActualWidth属性发生更改,该事件就会触发。由于wpf控件继承自FrameworkElement基类,因此WPF控件都可以访问此属性。