Win RT Xaml GridView:拖动 select 多个项目
Win RT Xaml GridView: Drag select multiple items
我正在尝试 select GridView 中的多个项目,方法是用鼠标悬停在它们上面(如绘图)。我试图通过 PointerEntered 事件实现此目的,但我无法通过代码更改选择。有没有办法实现自定义 selection 模式?
这对我不起作用,因为我无法在 Win RT XAML 中使用 Style.Triggers:
您将必须继承 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;
}
}
这就是我最终根据 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;
}
}
希望对想实现这个选择模式的大家有所帮助
我正在尝试 select GridView 中的多个项目,方法是用鼠标悬停在它们上面(如绘图)。我试图通过 PointerEntered 事件实现此目的,但我无法通过代码更改选择。有没有办法实现自定义 selection 模式?
这对我不起作用,因为我无法在 Win RT XAML 中使用 Style.Triggers:
您将必须继承 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;
}
}
这就是我最终根据 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;
}
}
希望对想实现这个选择模式的大家有所帮助