禁用WPF DocumentViewer中的CTRL+P

3
我正在为我们的一个应用程序开发一个新的演示组件。我正在构建一个自定义的WPF控件,其中只有一个DocumentViewer,并在Windows Forms应用程序中使用ElementHost来托管该CC。我使用C#和Visual Studio 2008。
我已经通过XAML自定义了所有内容,使其看起来与我们的应用程序完美集成,但仍有一件事情...
如果按下CTRL+P,打印对话框仍然会出现。我完全不知道如何禁用该功能。使用此CC是为了允许用户查看安装在该站点的系统手册,但我们不希望他们意外地打印它们(100页以上)。
2个回答

7
将以下代码添加到DocumentViewer中:
    <DocumentViewer.InputBindings>
        <KeyBinding Key="P" Modifiers="Control" Command="ApplicationCommands.NotACommand" />
    </DocumentViewer.InputBindings>

3
您可以尝试按照以下方式消耗keydown事件:

private void Window_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.P && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
        {
            e.Handled = true; 
        }
    }

1
可能需要捕获PreviewKeyDown而不是KeyDown,但其中一个应该能解决问题。 - Andy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接