私が取り組んでいるプロジェクトでは、リッチテキストボックス要素の内容をファイルにダンプするための保存ダイアログにアクセスするためのショートカットキーが必要です。WPFコマンドキーバインディングの問題
私のキーバインドとコマンドバインディングはXAMLで行われていますが、コードの背後には私が思っているものがあります。
私のキーとコマンドのバインドは、そうそうです。
<KeyBinding Command="local:customCommands.saveFile" Key="S" Modifiers="Ctrl"/>
...
<CommandBinding Command="local:customCommands.saveFile" Executed="launchSaveDialog"/>
そして、これは、保存ダイアログにCtrl + Sを押しても表示されませんWPFウィンドウの背後
private void launchSaveDialog(object sender, ExecutedRoutedEventArgs e)
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Rich Text format(*.rtf)|*.rtf|";
dlg.DefaultExt = ".rtf";
dlg.OverwritePrompt = true;
if (dlg.ShowDialog() == true)
{
FileStream fileStream = new FileStream(dlg.FileName, FileMode.Create);
TextRange range = new TextRange(RTB.Document.ContentStart, RTB.Document.ContentEnd);
range.Save(fileStream, DataFormats.Rtf);
}
}
コードです。 役立つ場合は、プログラムはフルスクリーンで実行されます。
また、Winformsのを実行する方法があるがSaveFileDialog
は、フィルタ文字列についての例外をスローするまで、これが私にとって最初の試み(少なくともアップに取り組みました別ウィンドウでWPFアプリの内部で
XAMLで定義されているKeyBindingとCommandBindingはどこにありますか? 'launchSaveDialog'にブレークポイントを置くことで、' launchSaveDialog'を呼び出すかどうかを調べることができます。 –
あなたは間違いなく 'launchSaveDialog'を呼び出していません。そうでないと無効なフィルタ文字列に関する例外が表示されます。末尾のパイプ( '|')文字を削除する必要があります。 –