我正在尝试在列表视图中禁用项目的右键单击功能。我尝试处理RightTapped
事件并将e.handled
值设置为true。这已覆盖列表视图的大部分区域,但是如果我右键单击列表视图项的边框,则仍会应用此选择样式。我希望用户仍然能够使用左键单击并应用列表选择的样式。这只是我要禁用的右键单击。
这是我到目前为止所尝试的内容:
<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>
以下是RightTapped处理程序的代码:
private void OnRightTapped(object sender, RightTappedRoutedEventArgs e)
{
e.Handled = true;
}
编辑:当我在ListView中单击项目的边框时,OnRightTapped
事件未被触发。什么可以吞下这个事件?
答案 0 :(得分:0)
通过使用我ListView.ItemTemplate
中的项目的背景颜色,我发现我的TextBlock
没有覆盖整个行区域。通过将Column width
设置为ListView
的确切大小并在此RightTapped
上设置Grid
事件处理程序,我能够涵盖所有右键点击区域。我仍然不知道为什么RightTapped
处理程序没有被ListView
本身解雇,但这对我所需要的是一个足够的解决方案。