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

Raj*_*mar 1 c# xaml windows-8 windows-runtime

我正在开发使用的是Windows 8发布预览和C#(VS 2012)metro应用,有没有什么办法让Grid宽度设置为Auto, :我有StackPanel一个Grid在它n的行数和n列(行数和列数正在动态生成).我需要知道Grid实际的宽度StackPanel,我试过

 1)var Actualwidth = grid.ActualWidth;            
 2)var Minwidth = grid.MinWidth;
 3)var width = grid.Width;
 4)var Renderwidth = grid.RenderSize.Width;
Run Code Online (Sandbox Code Playgroud)

结果如下

1 = 0.0
2 = 0.0
3 = NaN
4 = 0.0
Run Code Online (Sandbox Code Playgroud)

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

N_A*_*N_A 6

ActualWidth在测量和排列控制之后才设置.尝试处理OnLoaded事件并获得宽度.有关wpf的解释,请参见此处(winrt的相同解释).对于Windows 8 api,请看这里:

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