【问题标题】:Win RT Xaml GridView: Drag select multiple itemsWin RT Xaml GridView:拖动选择多个项目
【发布时间】:2016-03-09 11:40:35
【问题描述】:
【问题讨论】:
标签:
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;
}
}
我希望这对所有想要实现这种选择模式的人有所帮助。