forked from xamarin/Xamarin.Forms
/
ScrollModeTestGallery.xaml.cs
74 lines (59 loc) · 2.29 KB
/
ScrollModeTestGallery.xaml.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace Xamarin.Forms.Controls.GalleryPages.CollectionViewGalleries.ScrollModeGalleries
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ScrollModeTestGallery : ContentPage
{
readonly DemoFilteredItemSource _demoFilteredItemSource = new DemoFilteredItemSource(20);
CollectionView _collectionView;
public ScrollModeTestGallery(IItemsLayout itemsLayout = null, Func<DataTemplate> dataTemplate = null, Func<CollectionView> createCollectionView = null)
{
InitializeComponent();
_collectionView = createCollectionView == null ? new CollectionView() : createCollectionView();
_collectionView.ItemsLayout = itemsLayout ?? LinearItemsLayout.Vertical;
var scrollModeSelector = new EnumSelector<ItemsUpdatingScrollMode>(() => _collectionView.ItemsUpdatingScrollMode,
mode => _collectionView.ItemsUpdatingScrollMode = mode, "SelectScrollMode");
Grid.Children.Add(scrollModeSelector);
Grid.Children.Add(_collectionView);
Grid.SetRow(_collectionView, 5);
_collectionView.ItemTemplate = dataTemplate == null ? ExampleTemplates.PhotoTemplate() : dataTemplate();
_collectionView.ItemsSource = _demoFilteredItemSource.Items;
}
void ScrollToMiddle_Clicked(object sender, EventArgs e)
{
_collectionView.ScrollTo(_demoFilteredItemSource.Items.Count / 2, position: ScrollToPosition.Start, animate: false);
}
void AddItemAbove_Clicked(object sender, EventArgs e)
{
var index = (_demoFilteredItemSource.Items.Count / 2) - 1;
_demoFilteredItemSource.Items.Insert(index,
new CollectionViewGalleryTestItem(DateTime.Now,
"Inserted item",
"coffee.png",
index));
}
void AddItemBelow_Clicked(object sender, EventArgs e)
{
var index = (_demoFilteredItemSource.Items.Count / 2) + 2;
_demoFilteredItemSource.Items.Insert(index,
new CollectionViewGalleryTestItem(DateTime.Now,
"Inserted item",
"coffee.png",
index));
}
void AddItemToEnd_Clicked(object sender, EventArgs e)
{
_demoFilteredItemSource.Items.Add(
new CollectionViewGalleryTestItem(DateTime.Now,
"Added item",
"coffee.png",
_demoFilteredItemSource.Items.Count));
}
}
}