私は次Canvas
のTextBlock
ようなものを持っています:
<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
幅がキャンバスの幅よりも大きい場合、マーキー アニメーションが発生するようになっています。
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 と呼ばれます。およびプロパティが常に 0.0 として返されるTextBlock
ため、 が中央に表示されない理由がわかりません。これは Windows ストア アプリであり、さまざまな画面サイズに合わせて拡張できるようにしたいため、固定サイズを配置したくありません。ActualHeight
ActualWidth
何か案は?私は立ち往生しています。