首页 Windows wpf – xaml Scrollviewer – 禁用整个窗口的过度滚动/橡皮筋效果/快照效果/弹跳

wpf – xaml Scrollviewer – 禁用整个窗口的过度滚动/橡皮筋效果/快照效果/弹跳

当我在列表框中使用滚动查看器时,当我通过触摸滚动到达列表框的末尾时,我的整个窗口都会弹跳.使用鼠标滚轮时不会出现此问题.如何禁用这种过度滚动/橡皮筋效果/反弹效果/弹跳效果. 我在Windows 8计算机上使用.NET Framework 4.5. 您可以在此视频中看到退回效果

当我在列表框中使用滚动查看器时,当我通过触摸滚动到达列表框的末尾时,我的整个窗口都会弹跳.使用鼠标滚轮时不会出现此问题.如何禁用这种过度滚动/橡皮筋效果/反弹效果/弹跳效果.

我在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.

本文来自网络,不代表云浮站长网立场。转载请注明出处: https://www.0766zz.com/html/zhonghe/fwq/windows/20200905/9670.html
上一篇
下一篇

作者: dawei

【声明】:云浮站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

返回顶部