C# 使用WPF在列表框项目上按住shift键并单击功能

C# 使用WPF在列表框项目上按住shift键并单击功能,c#,wpf,xaml,listbox,C#,Wpf,Xaml,Listbox,我需要在列表框项目上添加功能,用户可以通过单独单击每个项目来选择项目,也可以执行shift+单击来选择列表中的一系列项目 <ListBox ItemsSource="{Binding ItemFields, Mode=TwoWay}" VerticalAlignment="Stretch" HorizontalAlignment="Left" Margin="16,156,0,34" Name="fRListbox" Width="499" >

我需要在列表框项目上添加功能,用户可以通过单独单击每个项目来选择项目,也可以执行shift+单击来选择列表中的一系列项目

<ListBox ItemsSource="{Binding ItemFields, Mode=TwoWay}"
         VerticalAlignment="Stretch" HorizontalAlignment="Left"
         Margin="16,156,0,34" Name="fRListbox" Width="499" >                   
    <ListBox.ItemContainerStyle>                            
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}"/>
            <EventSetter Event="PreviewMouseLeftButtonDown" Handler="reportDatagrid_MouseDown"/>                              
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>
但是按住Shift键并单击功能不起作用。
我是WPF新手,有人能指导我吗。

如果您希望用户在单击单个项目(如Windows资源管理器和几乎所有其他类型的列表)时按住Ctrl键选择项目,那么将SelectionMode设置为Extended是使用Ctrl和Shift键实现单选和多选的最简单方法


是的,我已经尝试过了,但这并不能通过单独单击每个项目来选择项目。我需要两种选择模式。请帮助。为您的用户提供他们期望的UI,而不是您认为他们应该拥有的UI。所有用户在选择列表中的非连续项时都很早就学会了使用Ctrl键-如果您让列表执行不同的操作,他们会讨厌你的应用程序强迫他们以不同于其他应用程序的方式工作。我需要这两个功能,因为以前的selectionmode是多个,它正在进行invidual项目的单击选择,但用户端的要求是同时按住shift键并单击,这样可以简化项目的系列选择。@MarkGreen不按住Ctrl键的multi-select是完全合理的,这取决于用例。WPF确实提供了SelectionMode.Multiple,毕竟是为了这个目的。这里的问题是SelectionMode.Multiple禁用了使用Shift+Click选择连续项或Ctrl+A选择全部项的功能,这似乎是一个错误/疏忽。
private void ListItem_MouseClick(object sender, MouseButtonEventArgs e)
{
    if ((e.LeftButton == MouseButtonState.Pressed) && Keyboard.IsKeyDown(Key.RightShift))
    {
        fRListbox.SelectionMode = SelectionMode.Extended;
    }
    else if ((e.LeftButton == MouseButtonState.Pressed) && Keyboard.IsKeyDown(Key.LeftShift))
    {
        fRListbox.SelectionMode = SelectionMode.Multiple;
    }
    else if (e.LeftButton == MouseButtonState.Pressed)
    {
        fRListbox.SelectionMode = SelectionMode.Multiple;
    }
}
<ListBox ItemsSource="{Binding ValuesView}" SelectionMode="Extended" />