我有一個覆蓋整個屏幕的網格,我將它翻譯成屏幕的頂部(或倒退)與故事板。現在我想要做同樣的事情,但距離頂端距離爲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。使用隱藏在視圖中的負位置似乎是不可靠的。改變邊界的動畫效果。 –