0

移動カウントダウンタイマーとなる次の TextBlock があります。

 <TextBlock x:Name="countdown">
      <TextBlock.RenderTransform>
          <TranslateTransform x:Name="countdownTransform" />
      </TextBlock.RenderTransform>
 </TextBlock>

次のトリガーは、TextBlock を移動し、カウントダウン テキストを設定する必要があります。

<Grid.Triggers>
    <EventTrigger SourceName="PlayButton" RoutedEvent="Button.Click">
         <BeginStoryboard>
               <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="songProgressBar" 
                                     Storyboard.TargetProperty="Value"
                                     From="0:30:0" To="0" Duration="0:30:0" />
                    <DoubleAnimation Storyboard.TargetName="countdownTransform" 
                                     Storyboard.TargetProperty="X" AutoReverse="True" 
                                     From="0.0" To="{Binding ElementName=countdown, Path=Width}" Duration="0:30:0" />
               </Storyboard>
          </BeginStoryboard>
    </EventTrigger>
</Grid.Triggers>

ただし、DoubleAnimation の From プロパティは (明らかに) TimeSpan を受け入れず、2 番目のトリガーでは、To プロパティは TextBlock の Width にバインドされません。To プロパティで TimeSpan を受け入れるカスタム タイプのアニメーションはありますか?

これを XAML で実行できるようにしたいのですが、C# コードでこれが可能であることはわかっています。

4

1 に答える 1

3

WidthTextBlockのはNaN、明示的に設定しない限り有効であり、DoubleAnimationNaNのプロパティの有効な値ではありません。ToVS 出力ウィンドウに次のエラー メッセージが表示されているはずです。

System.Windows.Data エラー: 5: BindingExpression によって生成された値は、ターゲット プロパティに対して有効ではありません。; Value='NaN' BindingExpression:Path=Width; DataItem='TextBlock' (Name='countdown'); ターゲット要素は 'DoubleAnimation' (HashCode=62632450) です。ターゲット プロパティは 'To' (タイプ 'Nullable`1') です

代わりに次のようにバインドできますActualWidth:

<DoubleAnimation ... To="{Binding ElementName=countdown, Path=ActualWidth}" />

他のアニメーションの場合: 継続時間が一定値の場合、単純に設定しないのはなぜFrom="30"ですか? Valueそれ以外の場合は、、、などの TimeSpan を取る ProgressBar も必要ですMinimumMaximum

于 2012-05-17T07:22:24.113 に答える