当我在列表框中使用滚动查看器时,当我通过触摸滚动到达列表框的末尾时,我的整个窗口都会弹跳.使用鼠标滚轮时不会出现此问题.如何禁用这种过度滚动/橡皮筋效果/反弹效果/弹跳效果.
我在Windows 8计算机上使用.NET Framework 4.5.
您可以在此视频中看到退回效果:http://www.vidup.de/v/gQ2pI/
这是我的示例代码:
<Window x:Class="style_test_for_scrollviewer.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <ListBox Width="200"> <WrapPanel Width="200" ScrollViewer.PanningMode="VerticalOnly" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible"> <Button Height="200" Width="200"></Button> <Button Height="200" Width="200"></Button> <Button Height="200" Width="200"></Button> <Button Height="200" Width="200"></Button> <Button Height="200" Width="200"></Button> <Button Height="200" Width="200"></Button> <Button Height="200" Width="200"></Button> <Button Height="200" Width="200"></Button> <Button Height="200" Width="200"></Button> <Button Height="200" Width="200"></Button> <Button Height="200" Width="200"></Button> <Button Height="200" Width="200"></Button> </WrapPanel> </ListBox> </Grid> </Window>
您可以通过重写OnManipulationBoundaryFeedback方法来删除此行为:
public class FixedListBox : ListBox { protected override void OnManipulationBoundaryFeedback(ManipulationBoundaryFeedbackEventArgs e) { e.Handled = true; } }
另一种解决方案是将以下处理程序添加到ManipulationBoundaryFeedback事件(直接在ListBox上或通过样式):
<ListBox ManipulationBoundaryFeedback="OnManipulationBoundaryFeedback"/>
要么:
<Style targettype="{x:Type ListBox}"> <EventSetter Event="ManipulationBoundaryFeedback" Handler="OnManipulationBoundaryFeedback"/> </Style>
使用以下代码:
protected void OnManipulationBoundaryFeedback(object sender,ManipulationBoundaryFeedbackEventArgs e) { e.Handled = true; }
这些方法也适用于ScrollViewer.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。