我使用大小与图形边界成比例的矩形创建了一个条形图。但是,当切换到不同的布局(例如快照视图)时,只有边框的大小会发生变化,而不是矩形的长度。如何检测布局或分辨率何时发生变化并调用函数来更新矩形的长度?
2 回答
在 Snapped/FullScreenPortrait/FullScreenLandscape 时,您可能应该只使用基本的 VisualStateManager 来更改布局。
如果您需要更高级的行为,请使用以下方法:
- 将 SizeChanged 处理程序添加到您的页面
- 在您的应用程序中将根 Grid/Panel 元素命名为 x:Name="Root" 并使其水平和垂直拉伸。
- 在 SizeChanged 事件处理程序中,您可以通过访问 Root.ActualWidth 和 Root.ActualHeight 找到实际的屏幕尺寸。在这里,您可以显示/隐藏/更改/调整您想要的任何内容。
这是 MSDN 上关于这个确切主题的文章:http: //msdn.microsoft.com/en-us/library/windows/apps/hh780612.aspx
还有一个微软似乎倾向于推荐的方法,那就是使用视觉状态来触发不同的视觉布局变化。
如果您执行 File->New Project 并选择 Grid App 应用程序,它们已经有代码(检查 App.cs)用于挂钩屏幕尺寸的变化并触发不同的视觉状态。
如果你有兴趣,我也写了一篇关于这个项目类型的剖析博文:http: //markmacumber.net/2012/08/anatomy-of-the-grid-app-template-in-vs2012-for- windows-8-c-xaml.html