2016-06-21 41 views
2

これは非常に簡単かもしれませんが、私はそれを行う方法を見つけることができませんでした。UWPの点滅のテキスト

私はTextBlockで点滅するテキストがほしいのです。それを簡単に行う方法はありますか?

私が考えることができる唯一の方法は、タイマーを使用してTextBlockフォアグラウンドを手動で変更することです。確かに簡単な方法があります。私はそれを理解することができません。

ありがとうございます!

+0

点滅動作を処理し、このストーリーボードを無期限に使用するストーリーボードを作成できます – GeralexGR

+0

フォアグラウンドを変更するXAMLに 'Storyboard'を作成しようとしましたか?あなたのUserControlの 'Loaded'イベントでそれを開始しますか? –

答えて

8

あなたのXAMLでStoryboardアニメーションを宣言することができテキストを永久に点滅させるマークアップ:

<TextBlock Text="I'm Blinking!"> 
    <TextBlock.Style> 
     <Style TargetType="TextBlock"> 
      <Style.Resources> 
       <Storyboard x:Key="flashAnimation" > 
        <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" AutoReverse="True" Duration="0:0:0.5" RepeatBehavior="Forever" /> 
       </Storyboard> 
      </Style.Resources> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 

これは私の経験を使用していますWPFとWinRT XAMLからは問題ありませんが、私はUWPが同じStoryboardアニメーションを使用していると確信しています。

MSDNの便利なリファレンスは、Animations Overviewです。

希望すると便利です。

+0

Geoff、あなたはMANです!ありがとうございました!私は単純なものがなければならないことを知っていた。ストーリーボードについてもっと知る必要があります。共有してくれてありがとう、チャンピオン! – Sam

+0

UWPでは、「接続可能なプロパティリソースがスタイルで見つかりませんでした」 – usefulBee

0

点滅するテキストの場合は、タイマーが最も簡単な方法だと思います。 (私はあなたがタイマ&を探していることを理解していますが、代わりに、層は実際に目的を果たすべきです) 以下のようなものがあなたを助けることがあります。

Timer timer = new Timer(); 

    public void Blinker() 
    {    
     timer.Interval = 500; 

     timer.Start(); 

     timer.Tick += new EventHandler(timer_tick); 
    } 

    void timer_tick(object sender, EventArgs e) 
    { 
     if(label3.ForeColor = System.Drawing.Color.Green) 
     { 
      label3.ForeColor = System.Drawing.Color.White; 
     } 

     else 
     { 
      label3.ForeColor = System.Drawing.Color.Green; 
     }    
    } 

    public void StopBlinker() 
    { 
     timer.Stop(); 
    } 

blinkerメソッドを適切に呼び出して、テキストを点滅させることができます。

あなたは、このようなコードで、たとえばそれを行うことができますの背後にあるコード(C#)とから
+0

まあ、それはまさに私の考えです。しかし、私はストーリーボードのコンセプトが好きです。共有+1: – Sam

5

 Storyboard storyboard = new Storyboard(); 
     storyboard.Duration = new Duration(TimeSpan.FromSeconds(10.0)); 
     DoubleAnimation opacityAnimation = new DoubleAnimation() 
     { 
      From = 1.0, 
      To = 0.0, 
      BeginTime = TimeSpan.FromSeconds(5.0), 
      Duration = new Duration(TimeSpan.FromSeconds(5.0)) 
     }; 

     Storyboard.SetTarget(opacityAnimation, txtBlink); 
     Storyboard.SetTargetProperty(opacityAnimation, "Opacity"); 
     storyboard.Children.Add(opacityAnimation); 
     storyboard.RepeatBehavior = RepeatBehavior.Forever; 
     storyboard.AutoReverse = true; 
     storyboard.Begin(); 

は、あなたがテキストブロックを持っていると仮定すると:

 <TextBlock x:Name="txtBlink" FontSize="32">Some text</TextBlock> 
+0

ありがとうAlexej、このコードは非常に便利です。 +1! – Sam

+1

文字列をPropertyPathに変換するために 'SetTargetProperty()'の第2引数を 'New PropertyPath(" Opacity ")に変更する必要があるかもしれません。 –