2011-11-13 15 views
1

ホーム画面でSMSとメールの未読数を表示するようなカウンターを表示するには、Windows Phoneコントロール(またはソースコード)を探しています。例えば、値が2から5に変化すると、3,4、および5の短いアニメーションが表示されます。ホーム画面の未読数に似たアニメーションを反転する

答えて

2

一方的にはReactive Extensionを使用します。

まず、Microsoft.Phone.ReactiveSystem.Observableの参照が必要です。

私のxamlページではNumberTextBlockというTextBlockを定義しました。またStoryboardを作成してTextの外観をScaleYに変更してアニメートしました。私のコードビハインドで

<phone:PhoneApplicationPage.Resources> 
    <Storyboard x:Name="Storyboard1"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="NumberTextBlock"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="0.8"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="1"/> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
</phone:PhoneApplicationPage.Resources> 

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <TextBlock x:Name="NumberTextBlock" VerticalAlignment="Center" HorizontalAlignment="Center" Style="{StaticResource PhoneTextTitle1Style}"> 
      <TextBlock.RenderTransform> 
       <CompositeTransform /> 
      </TextBlock.RenderTransform> 
    </TextBlock> 
</Grid> 

、私は、生成されたシーケンスに時間ディメンションを追加しGenerateFromTime()呼ばRxからメソッドを使用していました。 TimeSpan.FromMilliseconds(100)ここでは各番号の間の遅延です。

public MainPage() 
    { 
     InitializeComponent(); 

     this.Loaded += new RoutedEventHandler(MainPage_Loaded); 
    } 

    private void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     var getNumbers = this.GetNumbers(10); 

     getNumbers.ObserveOnDispatcher().Subscribe(ChangeNumberTextBlock); 
    } 

    private void ChangeNumberTextBlock(int number) 
    { 
     this.NumberTextBlock.Text = number.ToString(); 
     Storyboard1.Begin(); 
    } 

    private IObservable<int> GetNumbers(int total) 
    { 
     return Observable.GenerateWithTime(0, i => i <= total, i => i, _ => TimeSpan.FromMilliseconds(100), i => ++i); 
    } 

あなたはherehere (Silverlight TV)からRxについての詳細を読むことができます。

これが役に立ちます。 :)

+0

私は上記の答えが大好きですが、明らかにその解決策は実行中のアプリケーション内でのみ動作します。現在、メールタイルと同じアニメーション動作をフロントスクリーンタイルに複製する方法はありません。あなたができることは、バックグラウンドエージェントからタイルのいくつかの画像をプッシュすることですが、フレームワークの機能ほど滑らかではありません。 – Darkside

+0

私はカスタムタイルではなく、私のアプリの中に入れようとしています。私は新書の解を他のストーリーボードと組み合わせることができるかどうかを見極めるつもりです... – japf

+0

どうしたらいいか教えてください。 :) –

関連する問題