这里我有一个ListView。当用户左键/右键单击某个项目或没有任何项目的空白区域时,我需要执行不同的操作。 那么如何知道点击事件发生在项目或空白区域?我应该在ListView的事件中处理它?</ p>
答案 0 :(得分:0)
您无法使用ListView ItemClick事件来获取是右键还是左键单击。
但你可以在ListViewItem中添加AddHandle。
如果ListViewItem中有一个Grid,则可以添加句柄以使鼠标按下。
<ListView ItemsSource="{x:Bind AvaloniaCol}" IsItemClickEnabled="True" ItemClick="ListViewBase_OnItemClick">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Background="#FFFFFF" PointerPressed="UIElement_OnPointerPressed">
<TextBlock Text="{Binding}"></TextBlock>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
您可以在cs中编写UIElement_OnPointerPressed。
private void UIElement_OnPointerPressed(object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType == PointerDeviceType.Mouse)
{
var p = e.GetCurrentPoint((UIElement)sender);
if (p.Properties.IsLeftButtonPressed)
{
}
else if (p.Properties.IsRightButtonPressed)
{
}
}
}
您可以使用var p = e.GetCurrentPoint((UIElement)sender);
和p.Properties来获取是左键还是右键单击。
答案 1 :(得分:0)
您可能想使用UIElement.ContextRequested事件,该事件适用于鼠标和触摸。