我有一个包含 TextBlock
的 Canvas
:
<Canvas x:Name="ContentPanel" Grid.Row="1" DoubleTapped="ContentPanel_DoubleTapped">
<TextBlock x:Name="WordBlock" FontSize="226.667" FontFamily="Segoe UI Semilight" TextAlignment="Center"
RenderTransformOrigin="0.5, 0.5">
<TextBlock.RenderTransform>
<TranslateTransform x:Name="translate"/>
</TextBlock.RenderTransform>
</TextBlock>
</Canvas>
我的应用程序设计是,当用户导航到此页面时,TextBlock
将居中显示在Canvas
中,如果TextBlock
的宽度大于Canvas
的宽度,则会出现跑马灯动画:
private void SetAnimation()
{
Canvas.SetLeft(WordBlock, (ContentPanel.ActualWidth - WordBlock.ActualWidth) / 2);
Canvas.SetTop(WordBlock, (ContentPanel.ActualHeight - WordBlock.ActualHeight) / 2);
if (WordBlock.ActualWidth > ContentPanel.ActualWidth)
{
MarqueeAnimation.From = WordBlock.ActualWidth;
MarqueeAnimation.To = -WordBlock.ActualWidth;
MarqueeAnimation.Duration = new Duration(new TimeSpan(0, 0, 10));
MarqueeBoard.Begin();
}
}
这个方法被称为OnNavigatedTo。我无法弄清楚为什么TextBlock
不会居中,因为ActualHeight
和ActualWidth
属性总是返回0.0。我不想设置固定大小,因为这是一个Windows Store应用程序,并希望它能够适应不同的屏幕尺寸。
有什么想法吗?我卡住了。