2

リストボックス内に画像を表示しています。このリストボックスをscrollviewer内に配置しました。リストボックスの項目を移動するために2つの繰り返しボタンを使用しています。datacontextを使用してリストボックスをバインドしています。

問題:

ボタンを使用して画像を移動し、lisbox内の画像をクリックすると、初期位置に移動します。

コード:

   <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);
    }
4

2 に答える 2

5

問題は、ListBoxがScrollViewerを所有していると見なすため、選択が変更されるたびに、オフセットを必要な値に戻すことです。ScrollViewer.CanContentScroll="False"これを防ぐには、リストボックスに 設定します。

于 2010-07-06T12:35:41.680 に答える
1

ListBox内の内部ScrollViewerをオフにする必要があります。lbGameImageを再テンプレート化してScrollViewerを完全に削除することでそれを行うことができますが、より迅速な方法(実行しようとしたように見えます)は、lbGameImageの両方のScrollBarVisibility設定を「無効」に設定することです。非表示とは、それらがまだアクティブでコンテンツをスクロールしていることを意味し、表示できません。

于 2010-07-06T13:36:45.830 に答える