メイン ユーザー コントロールのロードされたイベントにコールバックをアタッチし、グリッド列をチェックするActualWidth
と、その値は 0 のままです。ただし、レイアウト システムがレンダリングに必要なすべての値を計算した後です。」
基本的にActualWidth
、アニメーションの 'to' 値を設定できるように が必要です (つまり、幅 0 から実際の幅まで何かがアニメーション化されます)。
メイン ユーザー コントロールのロードされたイベントにコールバックをアタッチし、グリッド列をチェックするActualWidth
と、その値は 0 のままです。ただし、レイアウト システムがレンダリングに必要なすべての値を計算した後です。」
基本的にActualWidth
、アニメーションの 'to' 値を設定できるように が必要です (つまり、幅 0 から実際の幅まで何かがアニメーション化されます)。
LayoutUpdated
Loaded イベントではなく、コントロールのイベントをフックまたはオーバーライドできますか? アニメーションが適切なタイミングで 1 回だけ実行されるようにするには、追加のロジックを追加する必要がありますが、必要な追加の柔軟性が得られる可能性があります。
おそらく間違った方法で問題を解決しようとしていると思います。
あなたの最善の策は、 s のプロパティScaleTransform
に追加されたa をアニメーション化することです。これを行う例を次に示します。Grid
RenderTransform
<Grid x:Name="LayoutRoot">
<Grid.Triggers>
<EventTrigger RoutedEvent="Grid.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="MyScaleTransform" Storyboard.TargetProperty="ScaleX" From="0" To="1" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Grid.Triggers>
<Grid Background="Blue" >
<Grid.RenderTransform>
<ScaleTransform x:Name="MyScaleTransform" />
</Grid.RenderTransform>
</Grid>
</Grid>