有没有办法在WPF ScrollViewer中启用滚动功能?

Bri*_*van 43 wpf touch

我正在尝试在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>
Run Code Online (Sandbox Code Playgroud)

Val*_*rie 69

您应该使用附加的属性:

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

ScrollViewer默认样式中的PanningMode默认为None,但将其设置为其他值将启用触摸滚动.我正在调查在我的应用程序中使用此功能,我正在寻找一个良好的减速度和比率值......我可能只需要测试它们以找到效果很好的东西.

  • 请注意,这些属性位于"其他"选项卡下并且它们**在Silverlight**中不可用,以防万一你想知道. (3认同)

Job*_*Joy 10

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

  • 您好 Jobi,上面的链接无效,请您发布一个有效的链接。谢谢!!! (2认同)