しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

メニューの置き換え

WPF の TextBox はコンテキストメニューに「切り取り」「コピー」「貼り付け」の 3 つしかないので、ContextMenu プロパティを置き換えることで拡張してみた。

<ContextMenu x:Key="TextBoxMenu">
    <MenuItem Header="元に戻す(_U)" Command="ApplicationCommands.Undo"/>
    <Separator/>
    <MenuItem Header="切り取り(_T)" Command="ApplicationCommands.Cut"/>
    <MenuItem Header="コピー(_C)" Command="ApplicationCommands.Copy"/>
    <MenuItem Header="貼り付け(_P)" Command="ApplicationCommands.Paste"/>
    <MenuItem Header="削除(_D)" Command="EditingCommands.Delete"/>
    <Separator/>
    <MenuItem Header="すべて選択(_A)" Command="ApplicationCommands.SelectAll"/>
</ContextMenu>

こんな感じで ContextMenu をリソースとして定義して、TextBox の ContextMenu プロパティに割り当てるだけで機能するメニューが作れます。一括で指定したいときにも、スタイルを使えばすぐにできます。