我有一个覆盖整个屏幕的网格,我将它翻译成屏幕的顶部(或倒退)与故事板。现在我想要做同样的事情,但距离顶端距离为48px。要做到这一点,我计算SlideToPosition
与SlideToPosition = -GridContent.ActualHeight + 48;
的顶部位置。当屏幕尺寸是静态时,这是可以的。转换为计算/绝对位置
的问题是,有很多的情况下,在这里我必须重新计算这个位置:
- 应用调整
- 方向改变
- 移动屏幕上的菜单中看到
调整大小时有时会出现结果抖动,有时甚至是错误的。我也尝试过使用
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>
我偏移了网格,因为我想要的效果与例如您将整个屏幕向上推动的解锁屏幕相同。我希望48px能够在每个方向/情况下得到解决。你的解决方案给我的相对高度只有48px(例如720)。 –
我会建议你不要在这种情况下使用TranslateTransform。使用隐藏在视图中的负位置似乎是不可靠的。改变边界的动画效果。 –