我想创建一个简单的ListBox,并在上面添加一个名为“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();
}
如果ListBox没有焦点,则Control + A有效。上下文菜单项工作正常。但是,如果ListBox具有焦点,则Control + A无法工作。
我觉得我在与ListBox斗争,但我不应该需要这样。
编辑:似乎我的所有问题都与多重选择模式有关。如果将其设置为Extended,则一切都有效,但我不想使用Extended模式。