2013-08-15 32 views
25

私たちは、タッチスクリーンモニタを搭載したWindows 8コンピュータで実行されるWPF 4.5アプリケーションに取り組んでいます。RealTimeStylusを無効にしたWPFアプリケーションでのタッチスクロールScrollViewer

the directions on the MSDNに続いてRealTimeStylusのサポートを無効にしました。これは、WM_TOUCHを使用してマルチタッチをサポートするビューがいくつか用意されているためです。

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

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

答えて

1

別のオプションは、コンテンツの周りの矢印ボタンを追加することです。私たちはこれをタッチスクリーンのキオスクに非常に効果的に使用しました。これはもう少し作業ですが、カスタムコントロールにすることもできます。私が持っている唯一のコードは垂直スクロールをサポートしています。

水平スクロールも追加するだけで十分です。下のコードでは、Scrollerの上下に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(); 
    } 
関連する問題