Win RT Xaml GridView: Drag select multiple items

陌路散爱 提交于 2019-12-08 08:16:42

问题


I'm trying to select multiple items in a GridView by hovering over them with pressed mouse (like drawing). I tried to achieve this with the PointerEntered event but I'm unable to change the selction from code. Is there a way to implement a custom selection mode?

This didn't work for me because I can't use Style.Triggers in Win RT XAML: https://stackoverflow.com/a/2886223/5739170


回答1:


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;
    }
}



回答2:


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.



来源:https://stackoverflow.com/questions/35890625/win-rt-xaml-gridview-drag-select-multiple-items

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