Я подозреваю, что вы не получите ответ, потому что никто не может повторить проблему.Используя только тот код, который вы указали, вы можете щелкнуть в любом месте сетки, и элемент будет выбран.
Я предполагаю, что кто-то в вашей команде создал шаблон ListViewItem в стиле, о котором вы можете знать или не знать.Если вы шаблонизируете ListViewItem, вы можете увидеть проблему, о которой говорите.
Если вы запустите приведенный ниже код, вы увидите проблему:
<Grid>
<ListView Grid.Row="1"
x:Name="lvUsers"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding AllUsers,Mode=TwoWay}"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Grid>
<Rectangle x:Name="ItemBackground" Fill="{x:Null}"/>
<GridViewRowPresenter/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ItemBackground" Property="Fill" Value="LightGray" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="ItemBackground" Property="Fill" Value="Gray" />
<Setter TargetName="ItemBackground" Property="StrokeDashArray" Value="1 1 1"/>
<Setter TargetName="ItemBackground" Property="Stroke" Value="DarkGray"/>
<Setter TargetName="ItemBackground" Property="StrokeThickness" Value="1"/>
<Setter TargetName="ItemBackground" Property="RenderOptions.EdgeMode" Value="Aliased"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.Items>
<ListViewItem Content="Test Item 1"></ListViewItem>
<ListViewItem Content="Test Item 2"></ListViewItem>
<ListViewItem Content="Test Item 3"></ListViewItem>
<ListViewItem Content="Test Item 4"></ListViewItem>
</ListView.Items>
<ListView.View>
<GridView>
<GridViewColumn Width="150" DisplayMemberBinding="{Binding}"/>
<GridViewColumn Width="150" DisplayMemberBinding="{Binding}"/>
<GridViewColumn Width="150" DisplayMemberBinding="{Binding}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
В этом случае щелчок в пустом месте демонстрирует поведение проблемы.Это не вызывает выбор элемента списка.
Решение состоит в том, чтобы добавить прямоугольник с прозрачностью 0 по всему шаблону элемента, например так:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Grid>
<Rectangle x:Name="ItemBackground" Fill="{x:Null}"/>
<GridViewRowPresenter/>
**<Rectangle Fill="White" Opacity="0"></Rectangle>**
</Grid>
< etc... >
Теперь щелчок работает, а также при наведении курсора.
Надеюсь, это поможет.Это тоже сводило нас с ума, пока мы не подумали об этом.