Win RT Xaml GridView: Drag select multiple items

ⅰ亾dé卋堺 提交于 2019-12-08 13:45:30

You will have to inherit the gridview control and override the PrepareContainerForItemOverride method:

The code:

public class MyGridView : GridView
{

    protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
    {
        (element as GridViewItem).PointerMoved += MyGridView_PointerMoved;

        base.PrepareContainerForItemOverride(element, item);
    }

    private void MyGridView_PointerMoved(object sender, PointerRoutedEventArgs e)
    {

 //your logic for setting the isselected
         (sender as GridViewItem).IsSelected = true;
    }
}

This is how I finally implemented it based on Chirag Shah's answer:

class MyGridView : GridView
{
    protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
    {
        (element as GridViewItem).PointerEntered += SelectItemOnEntered;
        (element as GridViewItem).AddHandler(PointerPressedEvent, new PointerEventHandler(SelectItemOnPressed), true);
        base.PrepareContainerForItemOverride(element, item);
    }

    private void SelectItemOnPressed(object sender, PointerRoutedEventArgs e)
    {
        (sender as GridViewItem).IsSelected = !(sender as GridViewItem).IsSelected;
    }

    private void SelectItemOnEntered(object sender, PointerRoutedEventArgs e)
    {
        if (e.Pointer.IsInContact)
            (sender as GridViewItem).IsSelected = !(sender as GridViewItem).IsSelected;
    }
}

I hope this helps everyone who wants to implement this selection mode.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!