Windows phone 7 为什么我的scrollviewer不';你不在WP7工作吗?

Windows phone 7 为什么我的scrollviewer不';你不在WP7工作吗?,windows-phone-7,Windows Phone 7,我有一个scrollviewer,里面有一个列表框。我想让scrollviewer在每次计时器滴答作响时使用ScrollToHorizontalOffset自动滚动(每1秒滚动100次)。 但是它不会工作,计时器工作正常,但是scrollviewer不会移动。这是我的密码,请帮忙 DispatcherTimer timer = new DispatcherTimer(); double current = 0; // Constructor public MainP

我有一个scrollviewer,里面有一个列表框。我想让scrollviewer在每次计时器滴答作响时使用ScrollToHorizontalOffset自动滚动(每1秒滚动100次)。 但是它不会工作,计时器工作正常,但是scrollviewer不会移动。这是我的密码,请帮忙

    DispatcherTimer timer = new DispatcherTimer();
    double current = 0;
   // Constructor
    public MainPage()
    {
        InitializeComponent();
        timer = new DispatcherTimer();
        this.imagesScrollview.Loaded += new RoutedEventHandler(imagesScrollview_Loaded);
        timer.Interval = TimeSpan.FromSeconds(1);

        timer.Tick += new EventHandler(timer_Tick);
        timer.Start();
    }
    void timer_Tick(object sender, EventArgs e)
    {
     //   ScrollViewer sv = new ScrollViewer();
        imagesScrollview.InvalidateScrollInfo();
        imagesScrollview.ScrollToHorizontalOffset(current);
        imagesScrollview.UpdateLayout();            
        current = current + 100;
        textBlock2.Text = current.ToString();           

    }
和我的滚动查看器:

 <ScrollViewer HorizontalScrollBarVisibility="Auto" Margin="8,563,8,2" Width="auto" x:Name="imagesScrollview" Opacity="1" Background="#FF3ED216" Grid.Row="1" RenderTransformOrigin="0.5,0.5" Loaded="imagesScrollview_Loaded">
        <ScrollViewer.RenderTransform>
            <CompositeTransform/>
        </ScrollViewer.RenderTransform>
        <ListBox x:Name="listBox" Width="Auto" Height="Auto" Background="#FF3ED216" ManipulationCompleted="listBox_ManipulationCompleted">
            <ListBox.RenderTransform>
                <CompositeTransform/>
            </ListBox.RenderTransform>
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal">
                        <StackPanel.RenderTransform>
                            <TranslateTransform X="0" />
                        </StackPanel.RenderTransform>
                    </StackPanel>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Margin="15,0">
                        <Image x:Name="imageAV" Source="{Binding avlink}" Height="80" Width="80" Stretch="UniformToFill" MouseLeftButtonUp="imageAV_MouseLeftButtonUp" ImageFailed="imageAV_ImageFailed" />
                        <StackPanel Orientation="Vertical" Margin="10,0,0,0" MouseLeftButtonUp="StackPanel_MouseLeftButtonUp">                             
                            <TextBlock Text="{Binding nickname}" Width="120"/>
                            <TextBlock Text="{Binding track}" FontWeight="Bold" Width="120"/>
                            <TextBlock Text="{Binding artist}" Width="120"/>
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </ScrollViewer>

默认情况下,ListBox有自己的滚动条。如果要将其包装在ScrollViewer中,则需要禁用其滚动条:

<ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled"

您应该使用列表框中的滚动查看器,而不是使用外部滚动查看器

假设存在一个名为“MainListBox”的列表框,则列表顶部的项目每秒将前进一个:

var dt = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
dt.Tick += (s, args) =>
                {
                    var count = VisualTreeHelper.GetChildrenCount(this.MainListBox);

                    for (var idx = 0; idx < count; idx++)
                    {
                        var child = VisualTreeHelper.GetChild(this.MainListBox, idx);

                        if (child is ScrollViewer)
                        {
                            var sv = child as ScrollViewer;

                            sv.ScrollToVerticalOffset(sv.VerticalOffset + 1);

                            break;
                        }
                    }
                };
dt.Start();
var dt=newdispatchermer{Interval=TimeSpan.FromSeconds(1)};
dt.Tick+=(s,args)=>
{
var count=visualtreeheloper.GetChildrenCount(this.MainListBox);
对于(var idx=0;idx

是的,这可能会更好,但它证明了这是可能的。

ScrollToHorizontalOffset和ScrollToVerticalOffset在Windows phone开发工具测试版中不起作用,该错误在beta2版本中已修复。。。。
我上面的代码在beta2版本中运行良好**ing坚持了两天

我试过了,但没有改变。你能告诉我在WindowsPhone7中使用ScrollToHorizontalOffset的正确方法吗?也许我没用对你能再解释一下吗?我将Scrollviewer置于listbox之外的原因是,将listbox水平放置时无法滚动。我还尝试了一个简单的scrollview,其中包含一个大图像,它滚动且horizontalOffset值增加,但不会移动…scrollViewer1.horizontalOffset.ToString()//这将返回0 scrollViewer1.ScrollToHorizontalOffset()(1000);scrollViewer1.HorizontalOffset.ToString()//这将返回1000,但scrollview根本没有移动。我还尝试了scrollViewer1.UpdateLayout()和scrollViewer1.InvalidateScrollInfo();ScrollToHorizontalOffset和ScrollToVerticalOffset在Windows phone开发工具测试版中不起作用,该错误在beta2版本中已修复……我上面的代码在beta2版本中运行良好。要获得水平滚动,请参阅或