代码之家  ›  专栏  ›  技术社区  ›  Geeth

Scrollviewer问题wpf

  •  2
  • Geeth  · 技术社区  · 14 年前

    问题:

    代码:

       <RepeatButton Click="rbtnLeft_Click" Name="rbtnLeft" Width="30" Height="30">
                    <Image Source="Images/GeneralImages/search_right_arrow.jpg"></Image>
                </RepeatButton>
                <Grid  x:Name="grid"  Width="666" HorizontalAlignment="Left">
                    <ScrollViewer Grid.Row="1" Name="svGame"
                    VerticalScrollBarVisibility="Hidden" 
                    HorizontalScrollBarVisibility="Hidden"  >
                        <ListBox ClipToBounds="True" Name="lbGameImage" Width="Auto" SelectionChanged="lbGameImage_SelectionChanged" ItemsSource="{Binding}"   ItemsPanel="{DynamicResource iptListBox}" ItemContainerStyle="{DynamicResource ListBoxItemStyle}"
                  ScrollViewer.VerticalScrollBarVisibility="Hidden" 
                  ScrollViewer.HorizontalScrollBarVisibility="Hidden"/>
                    </ScrollViewer>                                       
                </Grid>
                <RepeatButton Click="rbtnRight_Click" Name="rbtnRight" Width="30" Height="30">
                    <Image Source="Images/GeneralImages/search_left_arrow.jpg"></Image>
                </RepeatButton>
    

    c代码:

    private void rbtnLeft_Click(object sender, RoutedEventArgs e)
        {
            svGame.ScrollToHorizontalOffset(svGame.HorizontalOffset + 5);
        }
    
        private void rbtnRight_Click(object sender, RoutedEventArgs e)
        {
            svGame.ScrollToHorizontalOffset(svGame.HorizontalOffset - 5);
        }
    
    2 回复  |  直到 14 年前
        1
  •  5
  •   Quartermeister    14 年前

    问题是ListBox认为它拥有ScrollViewer,所以每当选择改变时,它就会将偏移量设置回它想要的值。套 ScrollViewer.CanContentScroll="False" 在列表框中,以防止出现这种情况。

        2
  •  1
  •   John Bowen    14 年前

    您需要关闭列表框中的内部ScrollViewer。您可以通过重新模板lbGameImage来完全删除ScrollViewer,但是更快的方法(看起来您尝试过这样做)是将lbGameImage上的ScrollBarVisibility设置都设置为“Disabled”。隐藏意味着它们仍然处于活动状态,滚动内容,你就是看不到它们。

    推荐文章