0

という名前のスライダーがありtbMasterます:

<Slider  Name="tbMaster"  Maximum="10000"  Value="{Binding SbVolumeValue}"/>

バインドされたプロパティの分離コード:

    double _SbVolumeValue;
    public double SbVolumeValue
    {
        get
        {
            return _SbVolumeValue;
        }
        set
        {
            _SbVolumeValue = value;
            OnPropertyChanged("SbVolumeValue");
        }
    }

ストーリーボードを持っていますsbVolume

    <Storyboard x:Key="sbVolume">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(RangeBase.Value)" Storyboard.TargetName="tbMaster">
            <EasingDoubleKeyFrame KeyTime="0:0:1.2" Value="40">
                <EasingDoubleKeyFrame.EasingFunction>
                    <CircleEase EasingMode="EaseOut"/>
                </EasingDoubleKeyFrame.EasingFunction>
            </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>

アプリケーションを実行すると、スライダーがうまく機能します。次のようにストーリーボードを開始すると、動作しなくなります。

 var sbVolume = this.FindResource("sbVolume") as Storyboard;
 sbVolume.Begin();

アニメ化した後に動作しなくなるのはなぜですか?

4

1 に答える 1

1

FillBehavior.Stopアニメーションにを追加してみてください。デフォルトはですFillBehavior.HoldEnd

上記のリンクから:

塗りつぶし期間中のアニメーションは引き続きターゲットプロパティの値を上書きするため、他の方法でターゲットプロパティの値を設定しようとしても、効果がないように見える場合があります。アニメーション化後にプロパティ値を設定する方法を示す例については、「方法:ストーリーボードでアニメーション化した後にプロパティを設定する」を参照してください。

于 2012-05-15T22:41:57.143 に答える