1

我正在使用 Windows 8 发布预览版和 C#(VS 2012) 开发 Metro 应用程序,有没有办法获得Grid设置为的宽度Auto简介:我在其中包含StackPanel行数和列数(行和列正在动态生成)。我需要知道实际宽度,我试过了GridnnGridStackPanel

 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

有什么方法可以得到实际宽度,请帮助我,在此先感谢

4

1 回答 1

6

ActualWidth直到控制测量和布置后才设置。尝试处理OnLoaded事件并在那里获取宽度。有关wpf 的解释,请参见此处(与 winrt 的解释相同)。对于 Windows 8 api,请参见此处

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

于 2012-08-16T14:59:35.020 回答