获取设置为“自动”的网格的实际宽度

时间:2012-08-16 14:43:33

标签: c# xaml windows-8 windows-runtime

我正在使用Windows 8发布预览和C#(VS 2012)开发metro应用程序,有没有办法让Grid宽度设置为Auto简短:我StackPanel的{​​{1}}行Grid行数nn列数(行和列动态生成) )。 我需要知道Grid中的StackPanel实际宽度,我试过

 1)var Actualwidth = grid.ActualWidth;            
 2)var Minwidth = grid.MinWidth;
 3)var width = grid.Width;
 4)var Renderwidth = grid.RenderSize.Width;

结果如下:

1 = 0.0
2 = 0.0
3 = NaN
4 = 0.0

有没有办法获得实际宽度,请帮助我,提前致谢

1 个答案:

答案 0 :(得分:6)

在测量和排列控件之后,才会设置

ActualWidth。尝试处理OnLoaded事件并获取宽度。有关wpf的解释,请参阅here(winrt的相同解释)。对于Windows 8 api,请参阅here

  

出于ElementName绑定的目的,ActualWidth不发布更新   当它改变时(由于它的异步和运行时计算   性质)。不要尝试使用ActualWidth作为绑定源   ElementName绑定。如果您的方案需要更新   基于ActualWidth,使用SizeChanged处理程序。