【问题标题】:Win RT Xaml GridView: Drag select multiple itemsWin RT Xaml GridView:拖动选择多个项目
【发布时间】:2016-03-09 11:40:35
【问题描述】:

我试图通过按下鼠标悬停在 GridView 中的多个项目(如绘图)来选择它们。我试图通过 PointerEntered 事件来实现这一点,但我无法从代码中更改选择。有没有办法实现自定义选择模式?

这对我不起作用,因为我无法在 Win RT XAML 中使用 Style.Triggers: https://stackoverflow.com/a/2886223/5739170

【问题讨论】:

    标签: xaml gridview winrt-xaml win-universal-app


    【解决方案1】:

    您必须继承 gridview 控件并覆盖 PrepareContainerForItemOverride 方法:

    代码:

    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】:

      这就是我根据 Chirag Shah 的回答最终实现它的方式:

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

      我希望这对所有想要实现这种选择模式的人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        相关资源
        最近更新 更多