Windows应用商店应用 - 更改Listview水平滑动偏移

时间:2014-06-30 16:16:42

标签: c# windows xaml

下一篇文章准确描述了我的问题,但从未有过解决方案。

有没有人找到解决方法呢?

Windows 8 - Customizing ListView swipe offset?

1 个答案:

答案 0 :(得分:1)

您可能需要滚动自己的操作来替换“轻扫”以选择。'此框架不是开源的,因此您甚至无法修改与某些控件绑定的内置手势。 无论如何,我得到了一个样本,为你展示你想要的东西。 到此为止。

  1. 禁用IsSwipeEnabled并自行滚动。
  2. ListViewItem应该处理操作。
  3. 设置要激活/取消激活ListViewItem.IsSelected
  4. 的距离

    这里是xaml

           <ListView SelectionMode="Multiple"
                  IsSwipeEnabled="False">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ContentPresenter ManipulationMode="TranslateX, System"
                                      ManipulationDelta="UIElement_OnManipulationDelta"></ContentPresenter>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListViewItem  ManipulationMode="TranslateX, System"
                           ManipulationDelta="UIElement_OnManipulationDelta">
                <Grid Height="100"
                      Width="200"
                      Background="Blue"></Grid>
            </ListViewItem>
            <ListViewItem  ManipulationMode="TranslateX, System"
                           ManipulationDelta="UIElement_OnManipulationDelta">
                <Grid Height="100"
                      Width="200"
                      Background="Blue"></Grid>
            </ListViewItem>
            <ListViewItem  ManipulationMode="TranslateX, System"
                           ManipulationDelta="UIElement_OnManipulationDelta">
                <Grid Height="100"
                      Width="200"
                      Background="Blue"></Grid>
            </ListViewItem>
            <ListViewItem  ManipulationMode="TranslateX, System"
                           ManipulationDelta="UIElement_OnManipulationDelta">
                <Grid Height="100"
                      Width="200"
                      Background="Blue"></Grid>
            </ListViewItem>
        </ListView>
    

    和背后的代码

            private void UIElement_OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
        {
            e.Handled = true;
            ListViewItem item = sender as ListViewItem;
            if (item == null) return;
            if (e.Cumulative.Translation.X > 150)
            {
                item.IsSelected = !item.IsSelected;
                e.Complete();
            }
        }