2014-02-10 30 views
0

我使用Itemcontrol創建Windows 8應用程序並綁定數據列表以顯示新聞。我需要創建動畫,如鏈接中顯示的HTML中的新聞動態:http://coolcarousels.frebsite.nl/c/9/ 我將如何實現這一目標?Windows 8獲得ItemControl後的ItemControl寬度

代碼:

<ItemsControl x:Name="lstdata" > 
       <ItemsControl.ItemTemplate > 
        <DataTemplate > 
         <!--Date--> 
         <StackPanel Orientation="Vertical" Margin="10,0" HorizontalAlignment="Left" VerticalAlignment="Center" > 
          <TextBlock HorizontalAlignment="Left" Text="{Binding Path=ModifedDate,Converter={StaticResource DatetimeToStringFormatConverter}}" VerticalAlignment="Top" Grid.Row="1" FontFamily="Segoe UI" FontWeight="Bold" FontSize="13.33" /> 
          <TextBlock Margin="0,0,0,0" Text="{Binding Path=Title , Mode=TwoWay}" Grid.Row="3" HorizontalAlignment="Left" VerticalAlignment="Top" FontFamily="Segoe UI" FontSize="13.33" /> 
         </StackPanel> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 


var newsViewModel = new NewsViewModel(); 
      await newsViewModel.GetNews(); 
      lstdata.ItemsSource = newsViewModel.NewsList; 

動畫:

FlipViewNews.RenderTransform = new TranslateTransform(); 

      DoubleAnimation animateX = new DoubleAnimation(); 
      animateX.From = 0; 
      animateX.To = 200; 
      animateX.Duration = TimeSpan.FromMilliseconds(400); 

      Storyboard.SetTarget(animateX, FlipViewNews.RenderTransform); 
      Storyboard.SetTargetProperty(animateX, "TranslateTransform.X"); 

      Storyboard story = new Storyboard(); 
      story.Children.Add(animateX); 
      story.RepeatBehavior = RepeatBehavior.Forever; 
      story.Begin(); 

我已經能夠使動畫作品。上面的代碼工作唯一的問題是,我需要在所有項目綁定後獲取ItemsControl實際寬度。我將如何得到這樣我可以創建一個像HTML中的字幕的動畫?

+0

你需要使用一些動畫代碼,無論是在XAML中,或在C#。你能否編輯這個問題來包含你所嘗試的?如果您使用WinJs + HTML,克隆起來會更容易。 :) – WiredPrairie

+0

我已經做了更改並添加了代碼。但那不起作用。另外我需要使它成爲itemcontrol中item的動態。我將如何實現這一目標? –

+0

您是否指第一次加載時滾動到底部? –

回答

0

您可以添加一個SizeChanged偵聽器,然後獲取元素的ActualWidth作爲響應,因爲綁定會影響大小?

http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.frameworkelement.sizechanged.aspx

+0

我相信如果itemscontrol是虛擬化的,控件的大小如果更多項目比以前的項目更大,也可以在您滾動時更改? –

+0

我需要獲得寬度,這樣我才能使用翻譯動畫像新聞動畫一樣使用Itemcontrol進行動畫製作,所以我需要獲取寬度才能設置爲和從屬性。 –

+0

我明白你需要什麼,我只是說寬度可以隨項目控件內容的變化而改變,所以你可能無法一次獲得寬度。你或者需要將數據綁定到'ActualWidth',或者添加一個'SizeChanged'偵聽器。 –

相關問題