我有一个列表视图,每个列表视图项中都有一个图像。我有 2 个事件:项目单击列表视图并点击图像。默认情况下,isItemClickEnabled 在列表视图中为 false,当它为 false 时:tap Image 事件有效,但 ItemClick 无效。当我将其设置为 true 时:我尝试在 ItemClick 事件中设置 e.OriginalSource,但即使单击图像,它也始终是一个列表视图:ItemClick 有效,但点击图像事件无效。
项目点击事件:
private void listView_ItemClick(object sender, ItemClickEventArgs e)
{
if (e.OriginalSource is Image)
(e.OriginalSource as Image).Tapped += image_Tapped;
else
Frame.Navigate(typeof(nextPage), e.ClickedItem as Prayer);
}
我做错了什么?
您可以使用技巧来达到此目的。在图像顶部放置一个按钮以捕获单击或点击事件。首先,您需要将图像和按钮包装在网格中,然后将按钮的不透明度设置为"0",将其垂直对齐和水平对齐设置为"拉伸"。
<Grid x:Name="ImageWrapper">
<Image
x:Name="Image" />
<Button
x:Name="ImageTapCaptureButton"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Opacity="0"
Tapped="Image_Tapped" />
</Grid>
注意: 按钮应位于 XAML 中的"图像"之后,因为它需要位于"图像"的顶部。
这样,您不需要将IsItemClickEnabled设置为"False",如果您单击图像中的任何位置,它将触发ItemClick事件。