C# Windows 8在数据绑定后获取ItemControl宽度

C# Windows 8在数据绑定后获取ItemControl宽度,c#,xaml,windows-8,windows-runtime,winrt-xaml,C#,Xaml,Windows 8,Windows Runtime,Winrt Xaml,我正在使用Itemcontrol创建一个Windows 8应用程序,并绑定数据列表以显示新闻。我需要在HTML中创建动画,如链接中所示: 我将如何实现这一点 代码: 我已经能够制作动画了。上面的代码正在工作。唯一的问题是,我需要在所有项目绑定后获取ItemsControl实际宽度。我该如何得到它,以便在HTML中创建一个类似marquee的动画???能否添加一个SizeChanged侦听器,然后获得元素的实际宽度作为响应,因为绑定会影响大小 您需要在Xaml或C#中使用一些动画代码。请你编辑一下

我正在使用Itemcontrol创建一个Windows 8应用程序,并绑定数据列表以显示新闻。我需要在HTML中创建动画,如链接中所示: 我将如何实现这一点

代码:


我已经能够制作动画了。上面的代码正在工作。唯一的问题是,我需要在所有项目绑定后获取ItemsControl实际宽度。我该如何得到它,以便在HTML中创建一个类似marquee的动画???

能否添加一个
SizeChanged
侦听器,然后获得元素的实际宽度作为响应,因为绑定会影响大小


您需要在Xaml或C#中使用一些动画代码。请你编辑一下这个问题,把你试过的内容包括进去好吗?如果您使用的是WinJs+HTML,那么克隆就更容易了。:)我已经做了更改并添加了代码。但这是行不通的。另外,我需要根据itemcontrol中的项目使其动态化。我该如何实现这一点?你是指第一次加载时底部的滚动吗?我需要获得宽度,这样我就可以像新闻播报器一样使用平移动画来设置Itemcontrol的动画,所以我需要获得宽度,以便设置到和来自属性我相信如果itemscontrol是虚拟化的,如果更多的项目比以前的项目大,则控件的大小也会随着您的滚动而改变?我需要获得宽度,这样我就可以使用翻译动画来设置Itemcontrol的动画,就像新闻播报器一样,因此我需要获得宽度,以便设置到和从属性..我了解您需要什么,我只是说宽度可以随着itemscontrol内容的变化而变化,所以您可能无法一次性获得宽度。您需要将数据绑定到
ActualWidth
,或者添加一个
SizeChanged
侦听器。当我添加Size changed事件时,它不会在每次添加新项目时都给出宽度。我没有说它会改变,我说宽度可以改变。如果项目为aaa、AAAAAA、AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,则每次添加项目时,
ActualWidth
可能会更改。它还取决于包含控件、水平对齐/etc的设置。
 <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();