単純なリストボックスを作成し、コンテキストメニュー項目としてSelectAllを使用したいと思います。ただし、ListBoxにはSelectAllの処理が組み込まれているため、機能しませんが、SelectAllを実装する試みを妨げているようです。
私のXAML全体は次のとおりです。
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.SelectAll"
Executed="SelectAllExecuted" />
</Window.CommandBindings>
<DockPanel>
<CheckBox DockPanel.Dock="Top">My Checkbox</CheckBox>
<ListBox Name="listBox" SelectionMode="Multiple">
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Command="ApplicationCommands.SelectAll" />
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>
</DockPanel>
</Window>
SelectAllExecutedは単純にこれです:
private void SelectAllExecuted(object sender, ExecutedRoutedEventArgs e)
{
listBox.SelectAll();
}
Control + Aは、リストボックスにフォーカスがない場合に機能します。コンテキストメニュー項目は正しく機能します。ただし、リストボックスがフォーカスされている場合、Control+Aは機能しません。
リストボックスと戦っているような気がしますが、そうする必要はありません。
編集:私の全体の問題はMultipleSelectionModeにあるようです。拡張に設定すると、すべてが機能しますが、拡張モードにはしたくありません。