我有一个覆盖整个屏幕的网格,我用Storyboard将其转移到屏幕顶部(或向下)。现在我想做同样的事情,但距离顶部有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>