0

現在のアプリで、視覚的な状態と自動/静的幅を扱う小さな問題があります。

表示状態に応じStackPanelて、 width="Auto" または width="400" のいずれかになります。Blend は、これら 2 つの値の間でアニメーション化できないことを教えてくれます (ここでは実際にアニメーション化するのではなく、フルスクリーン ビデオとコンポジット ビューを切り替えるだけです)。ここで、明示的なテストを実行し、Visual State を変更するときに幅を変更する必要があります ( VisualStateManager-framework を使用します。分離コードではなく XAML (ストーリーボードを使用) でこれを行う方法はありますか?

私が今日やっていることのいくつかのコードサンプル:

private void Trailer_OnFullScreenToggled(object sender, EventArgs e)
{
    var state = (Trailer.IsFullScreen() ? "Windowed" : "Fullscreen");

    // HACK: Done to get past the auto / px issue
    VisualsGrid.Width = Trailer.IsFullScreen() ? 400.0 : Double.NaN;

    VisualStateManager.GoToState(this, state, true);
}

どんな助けでも大歓迎です!

4

1 に答える 1

1

widthの「Auto」値はDouble.NaNにエイリアスされます。これがアニメーションが失敗する理由です。その値との間で補間を行うことはできません。

個別のキーフレームでキーフレームアニメーションを使用してみましたか?個別のキーフレームアニメーションを使用すると、補間が行われないため、アニメーションシステムがDouble.NaNとの間で補間できないという問題を回避できます。

私は現在開発環境の前にいないので、DiscreteDoubleKeyFrameと値がDouble.NaNのDoubleAnimationUsingKeyFramesを使用する必要があるのか​​、DiscreteStringKeyFrameと値がAutoのStringAnimationUsingKeyFramesを使用する必要があるのか​​わかりません。

もちろん、これは固定幅から自動サイズ設定までスムーズなアニメーションを実行しませんが、代わりに2つの間にポップします。

于 2013-02-27T17:02:05.237 に答える