Windows商店应用程序-更改列表视图水平滑动偏移量

本文关键字:水平 视图 平滑 偏移量 列表 应用程序 Windows | 更新日期: 2023-09-27 18:11:02

下一篇文章描述了我的问题,但从来没有一个解决方案。

有没有人找到解决这个问题的方法?

Windows 8 -自定义ListView滑动偏移量?

Windows商店应用程序-更改列表视图水平滑动偏移量

您可能需要滚动您自己的操作来取代'滑动选择'。这个框架不是开源的,所以你甚至不能修改绑定在一些控件上的内置手势。不管怎样,我有一个样品可以为你演示你想要的。这里。

  1. 禁用IsSwipeEnabled并滚动自己的。
  2. ListViewItem应该处理操作
  3. 设置激活/取消激活ListViewItem的距离。IsSelected
这里是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();
        }
    }