首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EventToCommand与InputBindings问题

EventToCommand与InputBindings问题
EN

Stack Overflow用户
提问于 2011-07-07 01:58:15
回答 2查看 937关注 0票数 1

我已经创建了一个解决方案来重现我在MVVM vs InputBindings中遇到的一个问题。问题围绕着打开另一个窗口,如果我有一个InputBinding连接到转义键并关闭第二个视图,它将关闭第二个视图并返回到第一个视图。如果我使用EventToCommand,然后手动调用它关闭第二个视图的同一个命令,它也会关闭第一个视图。

如果没有代码,我想这有点难理解,所以我已经创建了一个测试解决方案来重现这个问题。

这些步骤如下:

按预期工作

1)单击第一个窗口的按钮,打开第二个窗口。

2)按第二个转义键使用输入绑定

问题案例

1)单击第一个窗口的按钮,打开第二个窗口。

2)点击"Hello“文本框3)按EventToCommand键使用路径,两个窗口都关闭?

示例解

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-10 11:49:40

您必须通知WPF均衡器机制,按钮按下是在您的事件处理程序中处理的,并且它不应该在事件链上冒泡。如果没有,则文本框正在调用活动窗口( window2 )上的close,而转义处理程序在活动窗口上调用close (window1,因为文本框的转义处理程序已经关闭了window2)。因此,如果您按照以下方式修改您的Close2函数,那么一切都很好:

代码语言:javascript
复制
    public void Close2(KeyEventArgs e)
    {
        if (e.Key == Key.Escape)
            Close();
        e.Handled = true;
    }
票数 1
EN

Stack Overflow用户

发布于 2011-07-07 03:45:46

我认为问题是因为您将PreviewKeyDown事件挂在EventToCommand侦听器中。我认为这是对在KeyUp和KeyPress事件发生之前关闭窗口的键的反应。这意味着KeyUp和KeyPress将在主窗口上开火,主窗口通过关闭响应。

我在您的示例中将EventName更改为PreviewKeyPress,这似乎解决了问题。我可以按下逃逸,让它只关闭顶部的窗口。

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

https://stackoverflow.com/questions/6605027

复制
相关文章

相似问题

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