События WPF Touch + щелчки? - PullRequest
       17

События WPF Touch + щелчки?

0 голосов
/ 28 декабря 2011

Я реализую решение, описанное здесь, в проекте MVVM: http://nui.joshland.org/2010/04/why-wont-wpf-controls-work-with-touch.html

Но проблема в том, что если я реализую обработчики событий TouchDown и TouchUp в UserControl в моем XAML, то я сталкиваюсь с проблемой, когда другие GroupView больше не могут получать сообщения окна для щелчков - ИЛИ щелчки не могут обрабатываться поэтому связанное с ними оконное сообщение никогда не отправляется.

Нисходящая структура представлений: ButtonsView - имеет обработчики событий Touch GroupView - имеет обработчики событий Mouse и обработчики событий Flicks

Я использую это в коде, чтобы перехватить щелчки и обработать их:

    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. Спасибо

1 Ответ

0 голосов
/ 30 декабря 2011

Я решил эту проблему, захватив события мыши и события щелчка в ButtonsView, чтобы они не туннелировали до GroupView.

...