1

メイン ユーザー コントロールのロードされたイベントにコールバックをアタッチし、グリッド列をチェックするActualWidthと、その値は 0 のままです。ただし、レイアウト システムがレンダリングに必要なすべての値を計算した後です。」

基本的にActualWidth、アニメーションの 'to' 値を設定できるように が必要です (つまり、幅 0 から実際の幅まで何かがアニメーション化されます)。

4

3 に答える 3

1

LayoutUpdatedLoaded イベントではなく、コントロールのイベントをフックまたはオーバーライドできますか? アニメーションが適切なタイミングで 1 回だけ実行されるようにするには、追加のロジックを追加する必要がありますが、必要な追加の柔軟性が得られる可能性があります。

于 2009-12-15T07:32:49.390 に答える
1

おそらく間違った方法で問題を解決しようとしていると思います。

あなたの最善の策は、 s のプロパティScaleTransformに追加されたa をアニメーション化することです。これを行う例を次に示します。GridRenderTransform

   <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>
于 2009-12-11T10:54:32.040 に答える