ScrollToVerticalOffset()不起作用?

TTG*_*oup 3 c# wpf

我在WPF中使用ScrollView,我的应用程序允许用户单击按钮,然后它将自动滚动滚动视图,我在按钮单击事件中使用ScrollToVerticalOffset(),但scrollview没有更改任何内容.

我在互联网上搜索过这个问题,但到目前为止我还不能解决它.

还有一个问题:ScrollToVerticalOffset()取一个double作为参数,它可能会滚动到特殊像素,有没有办法滚动到n个项目(不是像素)?

这是我的代码

<ScrollViewer x:Name="scrollViewerChannelBtns" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" 
              Background="Transparent" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Hidden"
              CanContentScroll="True" ScrollChanged="ScrollViewerChannelBtns_ScrollChanged">
    <StackPanel x:Name="channelBtns" Orientation="Vertical">
        <ItemsControl x:Name="channelBtnItems" ItemsSource="{Binding}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <ToggleButton x:Name="tgbChannelName" Width="{Binding Path=ChannelNameBtnWidth}" Height="{Binding Path=ChannelNameBtnHeight}" HorizontalAlignment="Left" VerticalAlignment="Center" IsChecked="{Binding Path=IsChecked, Mode=TwoWay}" Content="{Binding Path=ChannelName}" Tag="{Binding Path=Index}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </StackPanel>
</ScrollViewer>  
Run Code Online (Sandbox Code Playgroud)

C#代码

//The button click event handled
private void BtnScrollDownClicked(object sender, RoutedEventArgs e)
{                        scrollViewerChannelBtns.ScrollToVerticalOffset(scrollViewerChannelBtns.VerticalOffset + 50);
}
private void BtnScrollUpClicked(object sender, RoutedEventArgs e)
{                        scrollViewerChannelBtns.ScrollToVerticalOffset(scrollViewerChannelBtns.VerticalOffset - 50);
}
Run Code Online (Sandbox Code Playgroud)

非常感谢,T&T

Teo*_*ahi 10

我的工作开始了;

  ScrollViewer.UpdateLayout();                              
  ScrollViewer.ScrollToVerticalOffset(outPoint.Y);
Run Code Online (Sandbox Code Playgroud)

  • 认真的,这家伙给出了极简主义的工作答案.他至少应该得到一些观点! (2认同)