0

在我的 WPF 应用程序中,我创建了一个Window包含 的FlowDocumentScrollViewer,以及其他控件。

我已经为我的 Window 创建了一个命令绑定到 Print 命令,其中包含一个 Executed 处理程序,它运行一些自定义逻辑,并最终打印 FlowDocumentScrollViewer 的内容。

一切正常,但我有一个问题。

如果用户在 FlowDocumentScrollViewer 中单击,然后按 Ctrl + P,它将执行 FlowDocumentScrollViewer 本身的打印命令绑定,而不是我的窗口的绑定。所以我的自定义逻辑没有执行,打印输出也不是应该的。

如何禁用 FlowDocumentScrollViewer 的打印命令绑定,并确保在所有情况下按 Ctrl + P 都会运行我的 Windows 的打印命令绑定?

4

2 回答 2

1

一种快速而肮脏的方法是挂钩 FlowDocumentScrollViewer 的PreviewKeyDown事件,并在按下 Ctrl + P 时将其设置为已处理。下面是代码的样子:

    void fds_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
    {
        if (e.Key == Key.P && Keyboard.Modifiers == ModifierKeys.Control)
            e.Handled = true;
    }
于 2011-05-13T15:14:19.143 回答
1

我通过从窗口中删除事件处理程序并将其直接连接到 FlowDocumentScrollViwer 来使其工作:

<FlowDocumentScrollViewer x:Name="MyFlowDocumentScrollViewer">
    <FlowDocumentScrollViewer.CommandBindings>
        <CommandBinding Command="Print" Executed="Print_Executed" />
    </FlowDocumentScrollViewer.CommandBindings>
</FlowDocumentScrollViewer>

然后我必须将任何其他打印命令控件(例如我的工具栏按钮)的 CommandTarget 直接绑定到 FlowDocumentScrollViewer。

于 2011-05-14T11:03:07.173 回答