我有一个 WPF 应用程序。在它的主窗口上,它有一个 PreviewKeyUp 处理程序,用于处理某些全局按键 - 在本例中为 Enter。我发现当显示模式对话框(ShowDialog)并按下回车键时,回车进入主窗口上的 PreviewKeyUp 处理程序。根据您的观点,这可能有意义,也可能没有意义……但这绝对不是我想要的。
因此,我看不到任何方法可以在主窗口上可靠地拦截 Enter 键(无论集中控制如何),而在模式对话框中按下 Enter 时也不会被调用。
这似乎是特定于 Enter 键的行为 - 它不会发生在其他键上,例如数字。
有人有什么想法吗?
主窗口代码:
private void Window_PreviewKeyUp(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Enter:
Controller.ProductSelected();
ActionComplete();
e.Handled = true;
break;
}
}
public bool PromptForPassword(string promptText, out string result)
{
DataEntryForm entryForm = new DataEntryForm();
entryForm.Owner = this;
entryForm.PromptText = promptText;
IsEnabled = false; // doesn't help
entryForm.ShowDialog();
IsEnabled = true;
result = entryForm.EntryData;
return (bool) entryForm.DialogResult;
}