WPF 按钮的 IsDefault - 覆盖一切

IsDefault for WPF button - overriding everything

是否有一个选项可以强制 Enter 成为某些视图的主键?我想要实现的是每当我单击 "Enter" 键时,我想调用 "IsDefault" 属性 设置为 true 的按钮,无论焦点是什么。

一种可能性是在 RoutedEvent 到达尝试对其做出反应的控件之前拦截它:

连接到 PreviewKeyDown 事件,直到您想要捕获它为止。如果按下回车键,则相应地对其作出反应,例如运行 与按钮中的代码相同,然后在 eventargs Handled 中设置为 true

private void previewKeyDownHandler(object sender, KeyEventArgs e)
{
    if(e.Key == Key.Enter || e.Key == Key.Return)
    {
        e.Handled = true;
        //Do your stuff
    }
}

Preview 事件是 WPF 中 RoutedEvent 系统的一部分。这两种机制称为隧道和冒泡。 Here you can read more on that.