2013-08-15 25 views
25

Chúng tôi đang làm việc trên một ứng dụng WPF 4.5 sẽ chạy trên các máy tính Windows 8 có màn hình cảm ứng.Chạm Scroll Scrollerer trong WPF App với RealTimeStylus Disabled

Chúng tôi đã tắt hỗ trợ cho RealTimeStylus theo sau the directions on the MSDN, vì chúng tôi có một số chế độ xem cần hỗ trợ đa chạm qua WM_TOUCH.

Sự cố là vô hiệu hóa hỗ trợ RealTimeStylus dường như cũng vô hiệu hóa khả năng cuộn ScrollViewer của người dùng bằng cách chạm vào - thông thường người dùng có thể xoay quanh ScrollViewers bằng ngón tay của họ, nhưng nếu hỗ trợ RealTimeStylus bị tắt, có vẻ như không thể làm cái này. PanningMode của ScrollViewer được đặt thành "Cả hai".

Có thể kết hợp những thứ này trong một ứng dụng WPF hoặc chúng có loại trừ lẫn nhau không?

Trả lời

1

Một tùy chọn khác là thêm các nút mũi tên xung quanh nội dung. Chúng tôi đã sử dụng điều này để có hiệu ứng tuyệt vời trên kiosk màn hình cảm ứng. Đó là một công việc nhiều hơn một chút, nhưng có thể được thực hiện thành một điều khiển tùy chỉnh. Mã duy nhất tôi có hỗ trợ cuộn dọc.

Nó cũng đủ dễ dàng để thêm cuộn ngang. Trong đoạn code dưới đây, có hai nút, được gọi là Less và More ở trên và bên dưới các cuộn.

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(); 
    } 
Các vấn đề liên quan