From 07d3be65fc9660eb184a6e50b0062670b6c848c7 Mon Sep 17 00:00:00 2001 From: Benjamin Mayrargue Date: Sat, 3 Jun 2023 09:32:21 +0200 Subject: [PATCH] add samples for scrolling content --- sample/DemoPages/SimpleSCrollViewPage.xaml | 35 +++++++++++ sample/DemoPages/SimpleSCrollViewPage.xaml.cs | 14 +++++ sample/MainPage.xaml.cs | 59 ++++++++++++++++++- sample/The49.Maui.BottomSheet.Sample.csproj | 12 +++- src/The49.Maui.BottomSheet.csproj | 2 +- 5 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 sample/DemoPages/SimpleSCrollViewPage.xaml create mode 100644 sample/DemoPages/SimpleSCrollViewPage.xaml.cs diff --git a/sample/DemoPages/SimpleSCrollViewPage.xaml b/sample/DemoPages/SimpleSCrollViewPage.xaml new file mode 100644 index 0000000..5a469bc --- /dev/null +++ b/sample/DemoPages/SimpleSCrollViewPage.xaml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sample/DemoPages/SimpleSCrollViewPage.xaml.cs b/sample/DemoPages/SimpleSCrollViewPage.xaml.cs new file mode 100644 index 0000000..4bb0965 --- /dev/null +++ b/sample/DemoPages/SimpleSCrollViewPage.xaml.cs @@ -0,0 +1,14 @@ +namespace The49.Maui.BottomSheet.DemoPages; + + +public partial class SimpleScrollViewPage: BottomSheet +{ + public List Items { get; } + + public SimpleScrollViewPage() + { + Items = Enumerable.Range(0, 50).Select(i => $"Item #{i}").ToList(); + + InitializeComponent(); + } +} diff --git a/sample/MainPage.xaml.cs b/sample/MainPage.xaml.cs index 3313855..48a7d5c 100644 --- a/sample/MainPage.xaml.cs +++ b/sample/MainPage.xaml.cs @@ -104,6 +104,18 @@ public MainPage() Description = "define a detent to be opened by default", Command = new Command(OpenDefaultDetent), }, + new DemoEntry + { + Title = "Content with scrolling collection", + Description = "the sheet contains a CollectionView", + Command = new Command(OpenWithCollectionView), + }, + new DemoEntry + { + Title = "Content is ScrollView", + Description = "the sheet contains a ScrollView", + Command = new Command(OpenWithScrollView), + }, #if ANDROID new DemoEntry { @@ -282,6 +294,51 @@ void OpenNoAnimationSheet() page.ShowAsync(Window, false); } + void OpenWithCollectionView() + { + var page = new SimplePage + { + Detents = new DetentsCollection + { + new FullscreenDetent(), + new MediumDetent { IsDefault = true }, + new RatioDetent { Ratio = .2f }, + }, + HasBackdrop = true, + }; + + page.SetExtraContent( + new CollectionView + { + HeightRequest = 400, + ItemsSource = Enumerable.Range(0,1000).Select(i => $"item {i}").ToList(), + ItemTemplate = new DataTemplate(() => + { + var label = new Label { Margin = new(20, 10, 20, 10) }; + label.SetBinding(Label.TextProperty, new Binding(".")); + return label; + }) + }); + + page.ShowAsync(Window); + } + + void OpenWithScrollView() + { + var page = new SimpleScrollViewPage + { + Detents = new DetentsCollection + { + new FullscreenDetent(), + new MediumDetent { IsDefault = true }, + new RatioDetent { Ratio = .2f }, + }, + HasBackdrop = true, + }; + + page.ShowAsync(Window); + } + #if ANDROID void OpenCustomizeBehavior() { @@ -316,7 +373,7 @@ private void list_SelectionChanged(object sender, SelectionChangedEventArgs e) item.Command.Execute(null); } - void list_Scrolled(object sender, ItemsViewScrolledEventArgs e) + void list_Scrolled(object? sender, ItemsViewScrolledEventArgs e) { Header.TranslationY = Math.Max(-e.VerticalOffset, -72); } diff --git a/sample/The49.Maui.BottomSheet.Sample.csproj b/sample/The49.Maui.BottomSheet.Sample.csproj index 0a5c0c3..539db4e 100644 --- a/sample/The49.Maui.BottomSheet.Sample.csproj +++ b/sample/The49.Maui.BottomSheet.Sample.csproj @@ -28,6 +28,7 @@ 10.0.17763.0 10.0.17763.0 6.5 + enable @@ -56,7 +57,7 @@ - + @@ -66,6 +67,15 @@ + + SimpleScrollViewPage.xaml + + + + + + MSBuild:Compile + diff --git a/src/The49.Maui.BottomSheet.csproj b/src/The49.Maui.BottomSheet.csproj index b30d9f7..b6060e0 100644 --- a/src/The49.Maui.BottomSheet.csproj +++ b/src/The49.Maui.BottomSheet.csproj @@ -48,7 +48,7 @@ - +