2011-12-27 62 views
0

我實現在一個MVVM項目在這裏描述的解決方案:http://nui.joshland.org/2010/04/why-wont-wpf-controls-work-with-touch.htmlWPF觸摸事件+電子書?

但問題是,如果我實現我的XAML的用戶控件的觸地得分觸上事件處理程序,然後我遇到一個問題,即其他GroupView不能得到用於輕彈的窗口消息 - 或者輕擊不能被處理,因此它們的關聯窗口消息不會被髮送。

的意見自上而下的結構是: ButtonsView - 具有觸摸事件處理 GroupView - 具有鼠標事件處理和筆觸事件處理程序

我在使用此代碼背後勾甩並處理它們:

private void UserControl_Loaded(object sender, RoutedEventArgs e) 
    { 
     HwndSource source = PresentationSource.FromVisual(this) as HwndSource; 
     source.AddHook(WndProc); 
    } 

    private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) 
    { 
     if (msg == Flicks.WM_TABLET_FLICK) 
     { 
      Flick flick = Flicks.ProcessMessage(lParam, wParam); 
      if (flick != null) 
      { 
       if (flick.Data.Direction == FLICKDIRECTION.FLICKDIRECTION_LEFT) 
        Scroller("left"); //scrolls left 
       else if (flick.Data.Direction == FLICKDIRECTION.FLICKDIRECTION_RIGHT) 
        Scroller("right"); //scrolls right 
       else if (flick.Data.Direction == FLICKDIRECTION.FLICKDIRECTION_UP) 
        Scroller("up"); //move up 
       else if (flick.Data.Direction == FLICKDIRECTION.FLICKDIRECTION_DOWN) 
        Scroller("down"); //move down 
        handled = true; 
      } 
     } 
     return IntPtr.Zero; 
    } 

想法/建議?我對WPF很新穎。 謝謝

回答

0

我解決了這個問題,方法是在ButtonsView中捕獲鼠標事件和滑動事件,以便它們不會隧道到GroupView。