2012-08-16 66 views
1

我正在开发使用的是Windows 8发布预览和C#Metro应用(VS 2012),有没有什么办法让Grid宽度设置为Auto简要:我有StackPanel,其中Gridn行数和n列数(行和列正在动态生成)。 我需要知道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 

有没有什么办法让实际宽度,请帮助我,在此先感谢

+0

它可能不是零,因为它不包含任何东西。尝试拉伸并从父容器获取宽度。 – 2012-08-16 14:49:19

+0

谢谢Dmitriy Reznik,但我对此很陌生,你能解释我还是给我发送一个链接,告诉我如何做到这一点。 – 2012-08-16 14:57:34

回答

5

ActualWidth没有设置,直到控件测量和排列后。尝试处理OnLoaded事件并获取宽度。有关wpf的解释,请参见here(对于winrt的解释相同)。对于Windows 8的API看到here

有关的ElementName的目的结合,当它改变ActualWidth的不发布更新 (由于它的异步和运行时间计算 性质)。不要尝试使用ActualWidth作为ElementName绑定的绑定源。如果您的场景需要根据ActualWidth更新 ,请使用SizeChanged处理程序。

+0

感谢mydogisbox。 – 2012-08-16 15:04:28

+0

如果这回答你的问题,那么请将其标记为答案。 – mydogisbox 2012-10-09 12:41:16

相关问题