触摸在WPF应用程序中滚动ScrollViewer并禁用RealTimeStylus

时间:2013-08-15 14:30:24

标签: wpf windows-8 scrollviewer touchscreen

我们正在开发一个WPF 4.5应用程序,该应用程序将在带有触摸屏监视器的Windows 8计算机上运行。

我们在the directions on the MSDN之后禁用了对RealTimeStylus的支持,因为我们有一些需要通过WM_TOUCH支持多点触控的视图。

问题是禁用RealTimeStylus支持似乎也会禁用用户使用触摸滚动ScrollViewer的功能 - 通常用户可以用手指平移ScrollViewers,但如果禁用RealTimeStylus支持,则不会似乎有可能做到这一点。 ScrollViewer的PanningMode设置为" Both"。

是否可以在WPF应用程序中组合这些内容,还是它们是互斥的?

2 个答案:

答案 0 :(得分:1)

另一种选择是在内容周围添加箭头按钮。我们已经将它用于触摸屏信息亭。这是一项更多的工作,但可以制作成自定义控件。我唯一的代码支持垂直滚动。

添加水平滚动也应该很容易。在下面的代码中,有两个按钮,在滚动条的上方和下方称为Less and More。

    double Epsilon = .001;

    private void Scroller_ScrollChanged(object sender, ScrollChangedEventArgs e)
    {
        if ( Scroller.ScrollableHeight > 0 ) {
            Less.Visibility = Math.Abs(Scroller.VerticalOffset - 0) > Epsilon ? Visibility.Visible : Visibility.Hidden;
            More.Visibility = Scroller.VerticalOffset + Scroller.ViewportHeight < Scroller.ExtentHeight ? Visibility.Visible : Visibility.Hidden;
        } else {
            Less.Visibility = More.Visibility = Visibility.Hidden;
        }

        if (Scroller.ExtentHeight / Scroller.ViewportHeight > 2)
        {
            SearchPanel.Visibility = Visibility.Visible;
        }
    }

    private void Less_Click(object sender, RoutedEventArgs e)
    {
        Sounds.Click();
        Scroller.PageUp();
    }

    private void More_Click(object sender, RoutedEventArgs e)
    {
        Sounds.Click();
        Scroller.PageDown();
    }

答案 1 :(得分:0)

您可以尝试使用SurfaceScrollViewer而不是普通的ScrollViewer。

SurfaceScrollViewer