[英]Scrollviewer Problem wpf
我在列表框内显示图像。 我已将此列表框放在scrollviewer中。 我正在使用两个重复按钮来移动列表框项目。 我正在使用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);
}
问题在于ListBox认为它拥有ScrollViewer,因此只要选择更改,它就会将偏移设置回所需的位置。 在列表ScrollViewer.CanContentScroll="False"
设置ScrollViewer.CanContentScroll="False"
可以防止这种情况。
您需要关闭列表框内的内部ScrollViewer。 您可以通过重新模板化lbGameImage来完全删除ScrollViewer来实现,但是更快的方法(看起来像您尝试做的)是将lbGameImage上的两个ScrollBarVisibility设置都设置为“ Disabled”。 隐藏意味着它们仍然处于活动状态并正在滚动内容,只是看不到它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.