【发布时间】:2017-04-01 00:18:27
【问题描述】:
我有一个覆盖整个屏幕的网格,我用情节提要将它翻译到屏幕顶部(或向后)。现在我想做同样的事情,但距离顶部 48px。为此,我用SlideToPosition = -GridContent.ActualHeight + 48; 计算SlideToPosition 中的最高位置。当屏幕尺寸为静态时,这是可以的。
问题是有很多情况,我必须重新计算这个位置:
- 应用调整大小
- 方向改变
- 移动屏幕菜单可见
调整大小时结果也很紧张,有时甚至是错误的。我也尝试使用
ApplicationView.GetForCurrentView().VisibleBounds.Top,但这与不同的变量相同。有没有更好的方法来转换到这个位置,而不必一直重新计算变量?
<Grid Name="GridContent">
<Grid Name="GridTranslate">
<Grid.RenderTransform>
<TranslateTransform x:Name="TranslateTransformContent" />
</Grid.RenderTransform>
</Grid>
</Grid>
<Storyboard x:Name="StoryboardUp">
<DoubleAnimation Storyboard.TargetName="TranslateTransformContent" Storyboard.TargetProperty="Y" To="{x:Bind Path=SlideToPosition, Mode=OneWay}" Duration="0:0:0.4">
</Storyboard>
<Storyboard x:Name="StoryboardDown">
<DoubleAnimation Storyboard.TargetName="TranslateTransformContent" Storyboard.TargetProperty="Y" To="0" Duration="0:0:0.4">
</Storyboard>
【问题讨论】: