C# ListView禁用右击选择样式
我正在尝试禁用列表视图中我的项目的右键单击功能。我已尝试处理RightTapped事件并将e.handled值设置为true。这已经覆盖了列表视图的大部分区域,但是如果我右键单击列表视图项的边框,此选择样式仍然适用。我希望用户仍然能够使用左键单击并应用列表中选定的样式。这只是我想禁用的右键单击 以下是我迄今为止所尝试的:C# ListView禁用右击选择样式,c#,xaml,listview,winrt-xaml,windows-applications,C#,Xaml,Listview,Winrt Xaml,Windows Applications,我正在尝试禁用列表视图中我的项目的右键单击功能。我已尝试处理RightTapped事件并将e.handled值设置为true。这已经覆盖了列表视图的大部分区域,但是如果我右键单击列表视图项的边框,此选择样式仍然适用。我希望用户仍然能够使用左键单击并应用列表中选定的样式。这只是我想禁用的右键单击 以下是我迄今为止所尝试的: <ListView ItemsSource="{Binding MyItems}" ItemClick="OnItemClicked"
<ListView
ItemsSource="{Binding MyItems}"
ItemClick="OnItemClicked"
IsItemClickEnabled="True"
SelectionMode="Multiple"
CanDragItems="True"
DragItemsStarting="OnDragItemsStarting"
RightTapped="OnRightTapped"
IsRightTapEnabled="False">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Margin" Value="-1,3,-1,0" />
<Setter Property="IsRightTapEnabled" Value="False"></Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Background="Transparent" RightTapped="OnRightTapped" HorizontalAlignment="Left" Height="100" Width="300">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding ImagePath}" Width="55" Height="55" Margin="0,0,0,1"/>
<Image Margin="20,0,0,22" Grid.Column="0" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="20" Height="20" Source="smallImage.png"/>
<StackPanel VerticalAlignment="Center" Margin="30,0,0,0" Grid.Column="1">
<TextBlock VerticalAlignment="Center" Text="{Binding Name}" Foreground="{Binding IsOnline, Converter={StaticResource BooleanToColorConverter}}" Style="{StaticResource BaseTextBlockStyle}" FontSize="20" Height="60"/>
</StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
编辑:当我单击ListView中某个项目的边框时,OnRightTapped事件没有被触发。什么会吞噬此事件?通过在我的ListView.ItemTemplate中播放项目的背景色,我发现我的TextBlock没有覆盖行的整个区域。通过将列宽设置为ListView的精确大小,并在此网格上设置RightTapped事件处理程序,我能够覆盖右键单击的所有区域。我仍然不知道为什么没有为ListView本身触发RightTapped处理程序,但这对于我所需要的是一个足够的解决方案
private void OnRightTapped(object sender, RightTappedRoutedEventArgs e)
{
e.Handled = true;
}