0

私の WPF アプリでは、他のコントロールの中でもWindowを含むを作成しました。FlowDocumentScrollViewer

Window を Print コマンドにバインドするコマンドを作成し、いくつかのカスタム ロジックを実行する Executed ハンドラーを使用して、FlowDocumentScrollViewer のコンテンツを印刷します。

すべてうまくいきますが、1 つ問題があります。

ユーザーが FlowDocumentScrollViewer 内をクリックしてから Ctrl + P を押すと、ウィンドウではなく、FlowDocumentScrollViewer 自体の Print コマンド バインディングが実行されます。そのため、カスタム ロジックが実行されず、印刷結果が正しくありません。

FlowDocumentScrollViewer の Print コマンド バインディングを無効にし、Ctrl + P を押すと常に Windows の Print コマンド バインディングが実行されるようにするにはどうすればよいですか?

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 に答える