如何在UWP中的ListView中检测左/右单击事件目标?

时间:2017-05-20 17:18:55

标签: xaml uwp

这里我有一个ListView。当用户左键/右键单击某个项目或没有任何项目的空白区域时,我需要执行不同的操作。 那么如何知道点击事件发生在项目或空白区域?我应该在ListView的事件中处理它?<​​/ p>

2 个答案:

答案 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来获取是左键还是右键单击。

请参阅http://lindexi.oschina.io/lindexi//post/win10-uwp-%E8%8E%B7%E5%8F%96%E6%8C%89%E9%92%AE%E9%BC%A0%E6%A0%87%E5%B7%A6%E9%94%AE%E6%8C%89%E4%B8%8B/

答案 1 :(得分:0)

您可能想使用UIElement.ContextRequested事件,该事件适用于鼠标和触摸。