25

タッチスクリーン モニターを備えた Windows 8 コンピューターで実行される WPF 4.5 アプリケーションに取り組んでいます。

WM_TOUCH によるマルチタッチ サポートが必要なビューがいくつかあるため、MSDN の指示に従って RealTimeStylus のサポートを無効にしました。

問題は、RealTimeStylus サポートを無効にすると、ユーザーがタッチを使用して ScrollViewer をスクロールする機能も無効になるように見えることです。通常、ユーザーは指で ScrollViewer をパンできますが、RealTimeStylus サポートが無効になっている場合、これを行うことはできないようです。ScrollViewer の PanningMode は「Both」に設定されています。

これらを WPF アプリケーションで組み合わせることは可能ですか、それとも相互に排他的ですか?

4

2 に答える 2

1

もう 1 つのオプションは、コンテンツの周りに矢印ボタンを追加することです。これは、タッチ スクリーン キオスクで大きな効果を発揮するために使用されています。もう少し手間がかかりますが、カスタム コントロールにすることができます。私が持っている唯一のコードは、垂直スクロールをサポートしています。

水平スクロールも簡単に追加できるはずです。以下のコードでは、スクローラーの上下に Less と More という 2 つのボタンがあります。

    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();
    }
于 2014-03-06T16:10:15.517 に答える
0

通常の ScrollViewer の代わりに SurfaceScrollViewer を試していただけますか。

SurfaceScrollViewer

于 2013-12-18T09:04:52.273 に答える