我正在开发wp8.1运行时应用程序,我需要获取文本块控件的实际宽度才能在加载页面(或用户控件)之前执行某些操作。在wp8应用中,我可以使用以下代码执行此操作:
var textBlock = new TextBlock();
textBlock.FontSize = 26;
textBlock.Text = "A";
var width = textBlock.ActualWidth;
但是,在wp8.1运行时应用程序中,以上代码无法获取实际宽度,并且始终返回0。有人可以告诉我如何在wp8.1运行时应用程序加载页面之前获取textblock实际宽度吗?
谢谢!
我真的很惊讶它可以在WP8.0 SL中工作,所以我做了一些测试。没错,它确实有效。为了使其能够在WP8.1运行时中运行,我将其添加到一个Container中,然后UpdateLayout
如下调用:
<Grid x:Name="ContentPanel">
<!--- content xaml --->
</Grid>
private void Page_Loaded(object sender, RoutedEventArgs e)
{
TextBlock tb = new TextBlock();
tb.Margin = new Thickness(-2500, -2500, 0, 0); // hide it using margin
tb.FontSize = 26;
tb.Text = "Test Test Test Test";
this.ContentPanel.Children.Add(tb);
tb.UpdateLayout();
var tb_width = tb.ActualWidth;
var tb_height = tb.ActualHeight;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句