【问题标题】:Get actual width of Grid that is set as Auto获取设置为 Auto 的 Grid 的实际宽度
【发布时间】:2012-08-16 22:59:35
【问题描述】:

我正在使用 Windows 8 发布预览版和 C#(VS 2012) 开发 Metro 应用程序,有没有办法获得设置为 AutoGrid 宽度, 简要:我有StackPanelGrid,其中有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;

结果如下

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

有什么方法可以得到实际宽度,请帮助我,提前谢谢

【问题讨论】:

  • 它也可能为零,因为它不包含任何内容。尝试从父容器拉伸和获取宽度。
  • 谢谢 Dmitriy Reznik,但我是新手,你能解释一下或给我发一个链接来告诉我如何做到这一点。

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


【解决方案1】:

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

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

【讨论】:

  • 如果这回答了您的问题,那么请将其标记为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 2015-04-27
相关资源
最近更新 更多