首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF Touch Events + Flicks?

WPF Touch Events + Flicks?
EN

Stack Overflow用户
提问于 2011-12-28 04:36:42
回答 1查看 1.4K关注 0票数 0

我在一个MVVM项目中实现了这里描述的解决方案:http://nui.joshland.org/2010/04/why-wont-wpf-controls-work-with-touch.html

但是问题是,如果我在我的XAML的UserControl中实现TouchDown和TouchUp事件处理程序,那么我就会遇到一个问题,其他GroupView不能再获得flicks的窗口消息--或者flicks不能被处理,因此它们相关的窗口消息永远不会被发送。

视图的自上而下的结构是: ButtonsView --具有触摸事件处理程序GroupView --具有鼠标事件处理程序和Flicks事件处理程序

我在代码隐藏中使用这一点来挂接并处理它们:

代码语言:javascript
复制
    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的新手。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-30 07:02:05

我通过捕获ButtonsView中的鼠标事件和轻击事件解决了这个问题,这样它们就不会传到GroupView上了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8649041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档