在禁用RealTimeStylus的情况下,使用WPF应用程序中的Touch Scrolling ScrollViewer。

25

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

根据MSDN的指示,我们已禁用了对RealTimeStylus的支持,因为我们有一些视图需要通过WM_TOUCH实现多点触控支持。

问题是,禁用RealTimeStylus支持似乎也会禁用用户使用触摸滚动ScrollViewer的能力 - 通常用户可以用手指在ScrollViewers中平移,但如果禁用了RealTimeStylus支持,则似乎无法做到这一点。ScrollViewer的PanningMode设置为“Both”。

在WPF应用程序中,是否可以同时实现这些功能,还是它们是互斥的?

2个回答

1
另一个选项是在内容周围添加箭头按钮。我们在触摸屏亭台上使用这种方法取得了很好的效果。这需要一些额外的工作,但可以制作成自定义控件。我现有的代码仅支持垂直滚动。
添加水平滚动应该也很容易。在下面的代码中,有两个按钮,称为“Less”和“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();
    }

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接