【问题标题】:Is there a way to touch-enable scrolling in a WPF ScrollViewer?有没有办法在 WPF ScrollViewer 中启用触摸滚动?
【发布时间】:2010-05-13 19:28:49
【问题描述】:

我正在尝试在 WPF 应用程序中创建一个表单,该表单将允许用户使用类似 iPhone 的手势来滚动可用字段。因此,我将所有表单控件都放在了 ScrollViewer 内的 StackPanel 中,当屏幕上显示的元素过多时,滚动条会按预期显示。

但是,当我尝试在支持触摸的设备上进行测试时,平移手势(将手指放在表面上并向上拖动)不会像我预期的那样将可视区域向下移动。

当我简单地将一些元素放入 ListView 时,触摸手势就可以正常工作。有什么方法可以在 ScrollViewer 中启用相同的行为?

我的窗口结构如下:

 <Window x:Class="TestTouchScrolling.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" Loaded="Window_Loaded">
<Grid>        
    <ScrollViewer Name="viewer" VerticalScrollBarVisibility="Auto">
        <StackPanel Name="panel">
            <StackPanel Orientation="Horizontal">
                <Label>Label 1:</Label>
                <TextBox Name="TextBox1"></TextBox>
            </StackPanel>
            <StackPanel Orientation="Horizontal">
                <Label>Label 2:</Label>
                <TextBox Name="TextBox2"></TextBox>
            </StackPanel>
            <StackPanel Orientation="Horizontal">
                <Label>Label 3:</Label>
                <TextBox Name="TextBox3"></TextBox>
            </StackPanel>

            <!-- Lots more like these -->

        </StackPanel>
    </ScrollViewer>
</Grid>

【问题讨论】:

    标签: wpf touch


    【解决方案1】:

    您应该使用附加的属性:

    • ScrollViewer.PanningMode
    • ScrollViewer.PanningDeceleration
    • ScrollViewer.PanningRatio

    ScrollViewer 默认样式中的 PanningMode 默认为 None,但将其设置为另一个值将启用触摸滚动。我目前正在研究在我的应用程序中使用此功能,并正在寻找一个好的减速和比率值......我可能只需要测试它们以找到运行良好的东西。

    【讨论】:

    • 请注意,这些属性位于 Miscellaneous 选项卡下,并且它们在 Silverlight 中不可用,以防您想知道。
    【解决方案2】:

    如果你使用的是.NET 4.0,微软团队最近发布了一个很酷的东西!!他们将所有这些漂亮的 Surface 控件移植到 Win7。 SurfaceScrollViewer 真的很酷,就像 iphone one。安装此工具包并从 VS2010 项目模板启动一个 SurfaceWin7Touch 项目 http://www.microsoft.com/en-us/download/details.aspx?id=26716

    【讨论】:

    • 您好Jobi,上面的链接失效了,请您发一个有效的链接。谢谢!!!
    • 链接失效
    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多