2013-07-08 2 views
1

Слушайте, я привязываю некоторые ObservableCollection Данные для моего текстового блока с некоторым временным промежутком Я показываю данные без анимации, , но мне нужно анимацию для отображения. Вот мой код:Как я могу анимировать TextBlock в телефоне Windows?

DispatcherTimer timer = new DispatcherTimer(); 
    public ObservableCollection<ItemViewModel> Items { get; private set; } 

    public Slideshow() 
    { 
     InitializeComponent(); 
     this.Items = new ObservableCollection<ItemViewModel>(); 
     DataContext = App.ViewModel; 
     this.Items = App.ViewModel.Items;  
    } 

    private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e) 
    { 
     itemNumber = 0; 
     Name.Text = this.Items[itemNumber].LineOne; 
     if (!App.ViewModel.IsDataLoaded) 
     { 
      App.ViewModel.LoadData(); 
     } 
     timer = new DispatcherTimer(); 
     timer.Interval = TimeSpan.FromSeconds(5); 
     timer.Tick += new EventHandler(timer_Tick); 
     itemNumber++; 
     timer.Start(); 
    } 

    public void timer_Tick(object sender, EventArgs e) 
    { 
     if (this.Items.Count > 0) 
     { 
      itemNumber++; 
      Name.Text = this.Items[itemNumber].LineOne; 
      if (itemNumber == this.Items.Count) 
       itemNumber = 0; 
     } 

    } 

XAML код

<TextBlock x:Name="Name" Foreground="White" Text="{Binding LineOne}"/> 

Как я могу это сделать. Спасибо за помощь

+0

Как вы хотите, чтобы оживить его? –

+0

Я хочу оживить TextBlock. Посмотрите, как живая плитка. Анимация –

ответ

5

Вы можете использовать StoryBoard для анимации TextBlock Текст. Какая анимация вы хотите использовать, зависит от вас. Здесь я демонстрирую угасающую анимацию текста. Установив его непрозрачность от 0 до 1 и наоборот.

В XAML

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
     <TextBlock Name="TextBlockName" Text="Hello" FontSize="25"/> 
    </Grid> 

добавить раскадровки в ресурсах

<phone:PhoneApplicationPage.Resources> 
     <Storyboard x:Name="StoryBoard1"> 
      <DoubleAnimation Storyboard.TargetName="TextBlockName" 
          Storyboard.TargetProperty="Opacity" 
          From="1" To="0" Duration="0:0:1" 
          Completed="DoubleAnimation_Completed_1"/> 
     </Storyboard> 

     <Storyboard x:Name="StoryBoard2"> 
      <DoubleAnimation Storyboard.TargetName="TextBlockName" 
          Storyboard.TargetProperty="Opacity" 
          From="0" To="1" Duration="0:0:1"/> 
     </Storyboard> 
    </phone:PhoneApplicationPage.Resources> 

В C#, когда вы хотите изменить текст в TextBlock, вызовите следующее перед установкой нового текста.

StoryBoard1.Begin(); 

и по окончании указанного выше метода

private void DoubleAnimation_Completed_1(object sender, EventArgs e) 
    { 
     //Change the text here before beginning of storyboard2 
     TextBlockName.Text = "ABCD"; 
     StoryBoard2.Begin(); 
    } 
+0

Спасибо. @Amit Kumar Code очень полезен для меня. Но это не дает Live tile чувствовать, как я могу улучшить этот код, чтобы выглядеть как живая плитка. это мой первый пост, что им точно ищет http://stackoverflow.com/questions/17313307/tile-animation-in-windows-phone-inside-the-app –

+0

Вы когда-нибудь смотрели функцию HubTile в инструментах для Windows Phone? –

+0

В этом посте я не размещал ни одного кода. Но мое требование - это живые фрагменты внутри приложения. Но с использованием хаб-плиток я не могу добавить все мои данные в эту одиночную плиту, поэтому я собираюсь с этим блоком текста. Анимация –

Смежные вопросы