如何在包含嵌套按钮的情况下停止使用触摸事件的父控件

时间:2015-02-27 15:23:29

标签: c# wpf events event-handling touch

所以我有我的控制权,我想在触摸时展开并显示我的按钮,它嵌套在控件的数据模板中。然后,我希望按钮可以按下,但如果触摸任何地方,除了按钮

之外,还希望控件折叠

初始化控制

MyControl mc = new MyControl();
mc.TouchDown += mc_TouchDown;
mc.TouchUp += mc_TouchUp;

活动处理程序

    void mc_TouchDown(object sender, TouchEventArgs e)
    {
        var mc = (MyControl)sender;
        mc.CaptureTouch(e.TouchDevice);
    }

    void mc_TouchUp(object sender, TouchEventArgs e)
    {
        var mc = (MyControl)sender;
        if (mc != null && e.TouchDevice.Captured == mc)
        {
            //Expand and show button / Collapse and hide button
            mc.ReleaseTouchCapture(e.TouchDevice);
        }
    }

现在按钮位于MyControl的数据模板中,并且连接到命令,当我触摸按钮以运行命令MyControl触发事件被触发并且按钮点击被忽略

如何使MyControl上的触摸事件发挥作用,但当按钮显示并触摸时,按钮触摸事件优先于MyControl事件?

2 个答案:

答案 0 :(得分:2)

所以我使用Command作为我的按钮,但我改为使用TouchDown事件代替

    private void addToDiary_TouchDown(object sender, TouchEventArgs e)
    {
        //do my thing
        e.Handled = true;
    }

这意味着按钮已执行且事件没有冒出MyControl

答案 1 :(得分:1)

尝试为e.Handled = true设置TouchEventArgs以防止事件冒泡。