如何禁用 ListView 中取消选择项目?

hya*_*kov 2 wpf xaml

我有

<ListView SelectionMode="Single" SelectedIndex="0" ItemsSource="{Binding AccountViewModels}" SelectedItem="{Binding SelectedItem}" Style="{StaticResource AccountsList}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <LocalViews:AccountView Margin="{StaticResource ControlMargin}" />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ListView>
Run Code Online (Sandbox Code Playgroud)

有没有办法禁用从 ListView (即)取消选择项目ctrl+click?换句话说,我不希望用户能够取消选择一个项目,但当然可以选择另一个项目。

mm8*_*mm8 7

由于此功能纯粹与视图/控件相关,因此不应在视图模型中实现,但您可以像这样处理 ListBoxItem 容器的 PreviewMouseLeftButtonDown 事件:

<ListView SelectionMode="Single" SelectedIndex="0" ItemsSource="{Binding AccountViewModels}" SelectedItem="{Binding SelectedItem}" Style="{StaticResource AccountsList}">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ItemPreviewMouseLeftButtonDown" />
        </Style>
    </ListBox.ItemContainerStyle>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <LocalViews:AccountView Margin="{StaticResource ControlMargin}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)
private void ItemPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    ListBoxItem lbi = sender as ListBoxItem;
    e.Handled = lbi.IsSelected;
}
Run Code Online (Sandbox Code Playgroud)