WPF - アクセラレータキーとショートカットキー

アクセラレータキー

ファイル(F)のようなもの。エクスプローラとかのメニューにある。 f:id:kewin:20180608205557j:plain

Altキーを押すと入力待ち状態になるので、その後Fを押せば、うえの例だとファイルのメニューアイテムが開く。 キーボードから手を離したくない人向け。

WPFでの書き方はXamlに書くだけ。 MenuItemのheader名に(_F)などを付与する。

<Menu HorizontalAlignment="Left" Height="21" VerticalAlignment="Top">
    <MenuItem Header="ファイル(_F)"/>
    <MenuItem Header="編集(_E)"/>
    <MenuItem Header="表示(_V)"/>
</Menu>

ショートカットキー

テキストエディタとかでCtrl+sで保存できたりするやつ。 これもXamlに書くだけ。

<Window.InputBindings>
    <KeyBinding Command="{Binding sampleCommand}" Key="Delete"/>
    <KeyBinding Command="{Binding sample2Command}" Gesture="Ctrl+o"/>
</Window.InputBindings>

この例だと、deleteキーを押すとViewModelのsampleCommandが動く。 Ctrl+oを押すとsampleCommand2が動く。 キーの割り当てはkeyでもGestureでもよいが、Keyだと同時押しを設定するときにもう少し記載がいる。

ただ、この例だとWindowにフォーカスがないと反応しない。 例えばWindow内のDatagridとかにフォーカスがあると反応しない。 なので反応させたいところに記載するとよい。

<Datagrid.InputBindings>
    <KeyBinding Command="{Binding sampleCommand}" Key="Delete"/>
    <KeyBinding Command="{Binding sample2Command}" Gesture="Ctrl+o"/>
</Datagrid.InputBindings>

こうなると複数個所で同じキーバインドを記載することになりそうだけど(Windowと、他のコントロール)、 リソースにまとめて指定とかできないかな??

バッチ - バッチを書く準備をする。

バッチ。Windowsの処理を自動化するもの。

書き方にかなり癖があってじゃじゃ馬なので、できれば書きたくない。

でも書いた方が仕事が楽になることはどうしてもある。

 

ので、できるだけデバッグとかしやすいように開発環境と整える。

「Visual Bat」というフリーソフトがある。

Visual Studioとは関係ないけど、開発環境として有用。

起動するとこんな画面が出る。(コードは適当)

f:id:kewin:20180522203859j:plain

毎回書くような「お約束」を記録できるのは良い。(左下)

変数トレースとか、ブレークポイントの設定もできる。

作成したバッチをexe化する機能もあるけど、これは用途が思いつかない。

誰かに渡すものだけど、ソースが汚くて見せたくない時とか?

もっと早く知りたかったソフト。