Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
165 commits
Select commit Hold shift + click to select a range
37dcc19
[iOS] Fixed Flyout icon not updating when root page changes using Ins…
Vignesh-SF3580 Mar 2, 2026
139c229
[iOS] Fix: CollectionView does not clear selection when SelectedItem …
Tamilarasan-Paranthaman Mar 3, 2026
6f60e91
[Android] Implemented material3 support for ActivityIndicator (#33481)
Dhivya-SF4094 Mar 3, 2026
a541b40
[Shell] Update logic for iOS large title display in ShellItemRenderer…
kubaflo Mar 3, 2026
87d5865
[iOS/Mac Catalyst 26] Fix Shell.ForegroundColor not applied to Toolba…
SyedAbdulAzeemSF4852 Mar 3, 2026
82d879f
[iOS 26] Fix Entry MaxLength not enforced due to new multi-range dele…
kubaflo Mar 4, 2026
acf7500
[iOS][Shell] Fix navigation lifecycle and back button for More tab (>…
kubaflo Mar 4, 2026
8254296
[iOS] CV2 ItemsLayout update (#28675)
kubaflo Mar 4, 2026
af09fae
[iOS26] Apply view margins in title view (#32205)
kubaflo Mar 4, 2026
7ecd711
[Android] Fix for TabbedPage BottomNavigation BarBackgroundColor not …
praveenkumarkarunanithi Mar 4, 2026
6b2bc7e
[Testing] Additional Feature Matrix Test Cases for CollectionView (#3…
TamilarasanSF4853 Mar 4, 2026
d578b92
Fix for FilePicker PickMultipleAsync nullable reference type (#33163)
SuthiYuvaraj Mar 4, 2026
7163303
Fix Picker layout on Mac Catalyst 26+ (#33146)
kubaflo Mar 4, 2026
c82e6da
[Android] Implemented Material3 support for Image (#33661)
Dhivya-SF4094 Mar 5, 2026
69eb29b
[iOS 26] Fix tab bar ghosting when navigating from modal to tabbed Sh…
SubhikshaSf4851 Mar 5, 2026
0e961ba
[Testing] Feature Matrix UITest Cases for VisualStateManager (#34146)
LogishaSelvarajSF4525 Mar 5, 2026
1eb9706
[Testing] Feature Matrix UITest Cases for Clip (#34121)
TamilarasanSF4853 Mar 5, 2026
67ac247
[iOS] Fix for Slider ThumbImageSource is not centered properly on iOS…
HarishwaranVijayakumar Mar 5, 2026
833bde8
[Testing] Feature matrix UITest Cases for Map Control (#31656)
HarishKumarSF4517 Mar 5, 2026
c39546f
[iOS] Fix: ActivityIndicator IsRunning ignores IsVisible when set to …
bhavanesh2001 Mar 5, 2026
cdf8c3a
[Windows] Fix modal page keyboard focus not shifting to newly opened …
jfversluis Mar 5, 2026
40b8403
[iOS][CV2] Fix CollectionView renders large empty space at bottom of …
devanathan-vaithiyanathan Mar 5, 2026
b21ec75
[iOS] Fix TimePicker AM/PM frequently changes when the app is closed …
devanathan-vaithiyanathan Mar 5, 2026
7fc2205
[Testing] Feature matrix UITest Cases for Visual Transform Control (#…
HarishKumarSF4517 Mar 5, 2026
b48f763
[Testing] Feature Matrix UITest Cases for Shell Pages (#33945)
NafeelaNazhir Mar 5, 2026
b97630b
[iOS] Fixed issue where group Header/Footer template was set to all i…
Tamilarasan-Paranthaman Mar 5, 2026
a477a0a
[iOS] Flyout Items Not Displayed in RightToLeft FlowDirection in Land…
kubaflo Mar 5, 2026
277bd0d
[Android] Fix improper rendering of ThumbimageSource in Slider (#34064)
NirmalKumarYuvaraj Mar 5, 2026
49c5cef
[iOS/Android] MediaPicker: Fix image orientation when RotateImage=tru…
michalpobuta Mar 5, 2026
d66acb4
[Android] Implemented Material3 support for ProgressBar (#33926)
SyedAbdulAzeemSF4852 Mar 5, 2026
6df09b8
[iOS, Mac] Fix for RadioButton TextColor for plain Content not workin…
HarishwaranVijayakumar Mar 6, 2026
ae7391c
[Android] Fix CollectionView selection crash with HeaderTemplate (#34…
NirmalKumarYuvaraj Mar 6, 2026
50c07aa
[iOS, Mac, Windows] GraphicsView: Fix Background/BackgroundColor not …
NirmalKumarYuvaraj Mar 6, 2026
9905323
Replace deprecated NetworkReachability with NWPathMonitor on iOS/macO…
Copilot Mar 6, 2026
d6978d7
Update Android Connectivity implementation to use modern APIs (#30348)
Copilot Mar 6, 2026
66be6fb
[iOS] Fixed Entry with IsPassword toggling loses previously entered t…
SubhikshaSf4851 Mar 7, 2026
7fa5c15
[Android] ScrollView: Fix HorizontalScrollBarVisibility not updating …
SubhikshaSf4851 Mar 7, 2026
181a8af
Optimize ordering of children in Flex layout (#21961)
symbiogenesis Mar 8, 2026
b5ccf42
[iOS] System.NullReferenceException at NavigationRenderer.SetStatusBa…
kubaflo Mar 8, 2026
f748966
[Android] Support for images inside HTML label (#21679)
kubaflo Mar 9, 2026
eaa7518
[All Platforms] Fix RadioButton warning when ControlTemplate is set w…
kubaflo Mar 9, 2026
0c25a32
[iOS] Fix gap at top of view after rotating device while Entry keyboa…
praveenkumarkarunanithi Mar 10, 2026
8fb2b72
[iOS] Fix Stepper layout overlap in landscape on iOS 26 (#34325)
Vignesh-SF3580 Mar 10, 2026
e2789f8
[Android] Fix Switch thumb shadow missing when ThumbColor is set (#33…
Shalini-Ashokan Mar 10, 2026
53d1cde
Fixed crash when calling ItemsView.ScrollTo on unloaded CollectionVie…
kubaflo Mar 10, 2026
7e84e6c
[iOS] SwipeView: Honor FontImageSource.Color in SwipeItem icon (#27389)
kubaflo Mar 10, 2026
8c2e25e
[iOS] GraphicsView DrawString - fix (#26304)
kubaflo Mar 10, 2026
2a1eb66
[Testing] Feature Matrix UITest Cases for Triggers (#34152)
HarishKumarSF4517 Mar 10, 2026
99a92a0
[Testing] Refactoring Feature Matrix UITest Cases for CheckBox Contro…
LogishaSelvarajSF4525 Mar 10, 2026
337ab0a
[iOS/MacCatalyst] Fix CheckBox foreground color not resetting when se…
Ahamed-Ali Mar 10, 2026
f8a1cf6
[Android] Fix control size properties not available during Loaded eve…
Vignesh-SF3580 Mar 10, 2026
c96c47a
[iOS 26] Fix back button color not applied for NavigationPage (#34326)
Shalini-Ashokan Mar 10, 2026
e91bffc
[iOS] Button RTL text and image overlap - fix (#29041)
kubaflo Mar 10, 2026
70520a8
[Android] - Fix Shadow Rendering For Transparent Fill, Stroke (Lines)…
prakashKannanSf3972 Mar 11, 2026
0314926
Fix for Shell tab visibility not updating when navigating back multip…
BagavathiPerumal Mar 11, 2026
35f0f64
[iOS/Mac] Fixed OnBackButtonPressed not firing for Shell Navigation B…
Dhivya-SF4094 Mar 11, 2026
6a85136
Android TimePicker ignores 24 hour system setting when using Format P…
kubaflo Mar 11, 2026
4aed54a
[Android] VoiceOver on Toolbar Item (#29596)
kubaflo Mar 11, 2026
db925a4
Visual state change for disabled RadioButton (#23471)
kubaflo Mar 11, 2026
547b4a9
[Windows] Fixed CollectionView with grouping fails to add items when…
NirmalKumarYuvaraj Mar 12, 2026
7c579fa
[iOS] Permissions.RequestAsync<Permissions.Sensors> does not return a…
kubaflo Mar 12, 2026
6703b4c
[Android] Button with corner radius shadow broken on Android device -…
kubaflo Mar 12, 2026
5b41978
[iOS] Label LinebreakMode (TailTruncation) for FormattedText does't w…
kubaflo Mar 12, 2026
89fb953
[Android] Fixed SelectionLength Not Updated Correctly for Right-to-Le…
Dhivya-SF4094 Mar 13, 2026
4230783
[iOS] Fix Flyout icon visibility when popping page using PopAsync or …
Vignesh-SF3580 Mar 13, 2026
16441e5
[iOS] Fix CollectionView excessive height when ObservableCollection s…
Vignesh-SF3580 Mar 14, 2026
9123b1a
[Android] Implemented Material3 support for SearchBar (#33948)
Dhivya-SF4094 Mar 14, 2026
837c4e4
[Android] Fix CollectionView sizing when wrapped in RefreshView (#34387)
Dhivya-SF4094 Mar 14, 2026
8670365
[Shell] Fix OnNavigatingFrom reporting wrong DestinationPage (#34404)
SubhikshaSf4851 Mar 14, 2026
4030236
[Android] Fix GraphicsView dirtyRect mismatch when display density ch…
praveenkumarkarunanithi Mar 14, 2026
4c61139
[iOS] Fix Scrollbar does not align with FlowDirection=RightToLeft in …
devanathan-vaithiyanathan Mar 14, 2026
0c2e015
[Android] Fix picked images end up with unexpected "_processed" suffi…
devanathan-vaithiyanathan Mar 14, 2026
d2fbddc
[iOS] Fix CollectionView horizontal scroll when empty inside Refres…
praveenkumarkarunanithi Mar 14, 2026
78cf0bb
[iOS/Mac] CollectionView: Fix incorrect ItemsViewScrolledEventArgs in…
SyedAbdulAzeemSF4852 Mar 14, 2026
4148614
[iOS] Fix Label background not clipped when Clip property is set (#34…
Shalini-Ashokan Mar 14, 2026
928be37
[iOS] Fix MediaPicker.PickPhotosAsync returning empty list when selec…
Vignesh-SF3580 Mar 14, 2026
4338d4c
[iOS] Fix SearchBar.CancelButtonColor not applied on iOS 26 (#34291)
Vignesh-SF3580 Mar 14, 2026
8382cad
[Testing] Feature Matrix UITest Cases for Shell Navigation Page (#34…
NafeelaNazhir Mar 14, 2026
9d1189c
[iOS] Fix for CollectionView.Measure() returning incorrect height whe…
BagavathiPerumal Mar 14, 2026
e37bd14
[iOS][Android] Shell: Fix tab bar visibility and selection after firs…
Shalini-Ashokan Mar 14, 2026
af7842e
[Android] Fix for CollectionView EmptyView swaps reusing stale Recycl…
BagavathiPerumal Mar 14, 2026
d3ecf64
[Android] CollectionView: Fix item spacing applied on outer edges cau…
kubaflo Mar 15, 2026
f04326f
[Android] Fix SearchHandler displays both Expanded and Collapsible vi…
Tamilarasan-Paranthaman Mar 15, 2026
2cec56e
[Android, iOS] Fix for ContentView not clearing its Background when s…
SyedAbdulAzeemSF4852 Mar 15, 2026
bdadaba
[Android] Tabs briefly display wrong background color when navigating…
KarthikRajaKalaimani Mar 15, 2026
b5e2ce5
[iOS] Shell: Fix 'More' tab navigation bar not applying Shell appeara…
kubaflo Mar 15, 2026
77d1e00
[Shell] Fix InvalidCastException when using QueryPropertyAttribute wi…
kubaflo Mar 15, 2026
312eecc
[iOS] - Fixed SearchBar Dimension Handling to Respect WidthRequest an…
prakashKannanSf3972 Mar 15, 2026
063adfd
[iOS][Android] Label: Fix RTL padding not mirroring (#32333)
kubaflo Mar 15, 2026
99743ca
[iOS 26] Fix NavigationPage hang after rapidly pushing and popping pa…
mduchev Mar 15, 2026
023031d
[iOS] Preserve AlwaysTemplate rendering mode in Button.ResizeImageIfN…
kubaflo Mar 15, 2026
21b90ea
Fix for Shell back navigation using GoToAsync not triggering page tra…
SyedAbdulAzeemSF4852 Mar 16, 2026
3318886
Refactored ShellFlyoutTemplatedContentRenderer InsetListener (#32471)
NirmalKumarYuvaraj Mar 16, 2026
72d8712
[Android] Shell: Implement Material 3 theming support (#33427)
Dhivya-SF4094 Mar 16, 2026
a841cc2
[iOS 26] Fixed Placeholder text of SearchHandler is not displayed (#3…
Dhivya-SF4094 Mar 16, 2026
2e186d0
[iOS] Fixed ProgressBar Flow Direction on iOS26 (#34015)
SubhikshaSf4851 Mar 16, 2026
63a6129
[iOS, Mac] Fix for TabbedPage FlowDirection Property Renders Opposite…
BagavathiPerumal Mar 16, 2026
0a11f9d
[iOS] Fix FlyoutPage toolbar items visibility and ordering (#31067)
Shalini-Ashokan Mar 16, 2026
6f28533
[iOS 26] Stepper: Fix not reaching min/max when increment exceeds rem…
SyedAbdulAzeemSF4852 Mar 16, 2026
ed08b77
[iOS] Fix PickContactAsync blocking subsequent dialog presentation (#…
Vignesh-SF3580 Mar 16, 2026
ad5747f
[Android] Fix for Android TalkBack announcing CollectionView items as…
praveenkumarkarunanithi Mar 16, 2026
51a7c68
[Android] Fixed TabbedPage bar background visual bug when using gradi…
SubhikshaSf4851 Mar 16, 2026
351c02b
Fix CharacterSpacing Set on Label Does Not Apply to Spans in Formatte…
SyedAbdulAzeemSF4852 Mar 16, 2026
bd83797
[Android] Fix for Automatic Flow Direction change in Graphics View (#…
HarishwaranVijayakumar Mar 16, 2026
b35f858
[Android] Fix Java.Lang.IllegalArgumentException crash in Entry with …
Vignesh-SF3580 Mar 16, 2026
db12224
[iOS] Fix indicator dots not rendering when using indicator size with…
Shalini-Ashokan Mar 16, 2026
0856eb6
[MacCatalyst] Shell: Fix ShellContent tab titles not rendering when e…
KarthikRajaKalaimani Mar 16, 2026
7d6d525
Fix conflicts and build failures in inflight/current branch (#34495)
devanathan-vaithiyanathan Mar 16, 2026
2650f30
[Android] Prevent tabs from being removed during Disappearing (#32878)
jfversluis Mar 16, 2026
0c6ad48
[iOS, Android] Fix for Incorrect Orientation in HEIC and JPG Images D…
HarishwaranVijayakumar Mar 16, 2026
c317f1c
[iOS & MacCatalyst] Fixed Flowdirection in Stepper (#34005)
SubhikshaSf4851 Mar 16, 2026
5219248
[iOS] Shell: Fix page viewport offset when Entry focused on page load…
BagavathiPerumal Mar 16, 2026
5a83b23
[Testing] Refactoring Feature Matrix UITest Cases for BoxView Control…
HarishKumarSF4517 Mar 16, 2026
80311c7
[iOS] SwipeGestureRecognizer: Fix swipe direction detection on rotate…
BagavathiPerumal Mar 16, 2026
c9cd8d2
[iOS/Mac] Shell: Prevent double back-navigation on rapid push/pop in …
SubhikshaSf4851 Mar 16, 2026
e45d0e7
Fix Android/iOS map polygon clearing issue by resetting MapElementId …
Copilot Mar 16, 2026
eeae10a
SwipeView: Fix scroll parent detection race condition in DataTemplate…
kubaflo Mar 16, 2026
237b486
[Testing] Refactoring Feature Matrix UITest Cases for Border Control …
HarishKumarSF4517 Mar 16, 2026
d2d4cd1
[Android, iOS] Fix for Shell flyout navigation fires NavigatedTo befo…
praveenkumarkarunanithi Mar 16, 2026
2ee2c5f
[Android] Essentials: Cancel pending picker tasks when IntermediateAc…
KarthikRajaKalaimani Mar 16, 2026
c676660
[Android] Fix for ArgumentOutOfRangeException thrown by ScrollTo when…
SyedAbdulAzeemSF4852 Mar 17, 2026
d8e8406
[Housekeeping] Refactor iOS large titles sample (#33084)
kubaflo Mar 17, 2026
0667032
[Android, iOS, macOS] Fixed Shell SearchHandler Command Not Executed …
NanthiniMahalingam Mar 17, 2026
13ba50e
[Android, iOS] Throw exceptions consistently for invalid StaticResour…
Vignesh-SF3580 Mar 17, 2026
d580572
Fix for Binding failure in RadioButton after .NET 10 upgrade (#34285)
BagavathiPerumal Mar 17, 2026
70ec282
Fix: Replace double.IsFinite to resolve compilation errors in SwipeGe…
Vignesh-SF3580 Mar 17, 2026
936783c
[Windows/Android] Fix RadioButton TextTransform Property not working …
devanathan-vaithiyanathan Mar 17, 2026
0b940aa
Shell: Update flyout behavior when items are dynamically replaced (#2…
Vignesh-SF3580 Mar 17, 2026
a9a24ec
[Android] - Fix Inconsistent Footer Scrolling Behaviour in Collection…
prakashKannanSf3972 Mar 17, 2026
c4e883a
[Android] Switch: Add opt-in Material3 support (#33132)
NirmalKumarYuvaraj Mar 17, 2026
7dcd732
[Android] CollectionView: Defer RemainingItemsThresholdReached to avo…
NirmalKumarYuvaraj Mar 17, 2026
b43eead
[iOS/MacCatalyst] Fix Shell TabBarDisabledColor not working on disabl…
praveenkumarkarunanithi Mar 17, 2026
39226a7
[iOS] - Fixed ImageSource.FromFile fails when image in subfolder (#31…
NirmalKumarYuvaraj Mar 17, 2026
4f65ded
[Android][iOS] SearchBar: Fix UserInteractionEnabled not respecting I…
NirmalKumarYuvaraj Mar 17, 2026
0e92ec7
[blazorwebview] align `SupportedOSPlatform` attribute with templates …
jonathanpeppers Mar 17, 2026
c4b7236
Fix Changing Shell.NavBarIsVisible does not update the nav bar (#30339)
devanathan-vaithiyanathan Mar 17, 2026
546ebe5
[Android] Fix for Shell custom FlyoutIcon display problem (#27502)
Ahamed-Ali Mar 17, 2026
ed2336c
Refactor image rotation and PNG format logic (#33140)
kubaflo Mar 17, 2026
dd1bdf6
[iOS/Mac] SwipeGestureRecognizer: Avoid firing parent swipes during c…
KarthikRajaKalaimani Mar 18, 2026
f8dbcff
[iOS] Fix incorrect FirstVisibleItemIndex reported by CollectionView.…
Shalini-Ashokan Mar 18, 2026
6136408
[Android] Implemented Material3 support for ImageButton (#33649)
Dhivya-SF4094 Mar 18, 2026
844d6c5
Fix LayoutCycleException from nested Borders on Windows (#34337)
Oxymoron290 Mar 18, 2026
c879c6c
[Android, iOS] - Flyout icon should remain visible when a page is pus…
praveenkumarkarunanithi Mar 18, 2026
067887d
[Android] Implement material3 support for Slider (#33603)
HarishwaranVijayakumar Mar 18, 2026
2d7e73c
Fix Compiled Bindings with explicit sources inside DataTemplates (#34…
SubhikshaSf4851 Mar 18, 2026
1155a05
[Android] CarouselView incorrectly reads out "double tap to activate"…
kubaflo Mar 18, 2026
dcb3060
[Android] Implemented Material3 support for DatePicker (#33651)
Dhivya-SF4094 Mar 18, 2026
af14dee
Fix CS0246: Replace MauiMaterialSlider with Slider in SliderExtension…
sheiksyedm Mar 18, 2026
4386a80
[Android] Implement material3 support for Entry (#33673)
HarishwaranVijayakumar Mar 18, 2026
3b1dad6
added events
TamilarasanSF4853 Nov 23, 2025
7b361bc
added additional events
TamilarasanSF4853 Nov 24, 2025
f2a2663
updated test cases
TamilarasanSF4853 Nov 24, 2025
d9f736b
added new test cases
TamilarasanSF4853 Nov 27, 2025
7ece9c1
added new test cases
TamilarasanSF4853 Dec 1, 2025
123d23c
added new test cases
TamilarasanSF4853 Dec 2, 2025
955cda4
updated test case
TamilarasanSF4853 Jan 20, 2026
a72b051
updated test cases
TamilarasanSF4853 Jan 20, 2026
c5da1c9
added images
TamilarasanSF4853 Jan 20, 2026
51a1cf2
added mac snapshots
TamilarasanSF4853 Feb 17, 2026
e05dcee
added comment
TamilarasanSF4853 Feb 19, 2026
4fb1f74
added iOS 26 images
TamilarasanSF4853 Mar 10, 2026
ff1193b
added image
TamilarasanSF4853 Mar 10, 2026
fa91da1
added android images
TamilarasanSF4853 Mar 19, 2026
5a926b3
added iOS image
TamilarasanSF4853 Mar 19, 2026
12bc65c
Merge remote-tracking branch 'origin/inflight/current' into collectio…
kubaflo Mar 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,12 @@ public class CollectionViewViewModel : INotifyPropertyChanged
private SelectionMode _selectionMode = SelectionMode.None;
private object _selectedItem;
private ObservableCollection<object> _selectedItems = new ObservableCollection<object>();
private ScrollToPosition _scrollToPosition = ScrollToPosition.MakeVisible;
private string _groupName = "Fruits";
private int _groupIndex = 0;
private string _scrollToByIndexOrItem = "Index";
private string _scrollToItem;
private int _scrollToIndex = 0;
private int _selectionChangedEventCount = 0;
private string _previousSelectionText;
private string _currentSelectionText;
Expand Down Expand Up @@ -271,6 +277,84 @@ public bool IsGrouped
}
}

public ScrollToPosition ScrollToPosition
{
get => _scrollToPosition;
set
{
if (_scrollToPosition != value)
{
_scrollToPosition = value;
OnPropertyChanged();
}
}
}

public string GroupName
{
get => _groupName;
set
{
if (_groupName != value)
{
_groupName = value;
OnPropertyChanged();
}
}
}

public int GroupIndex
{
get => _groupIndex;
set
{
if (_groupIndex != value)
{
_groupIndex = value;
OnPropertyChanged();
}
}
}

public string ScrollToByIndexOrItem
{
get => _scrollToByIndexOrItem;
set
{
if (_scrollToByIndexOrItem != value)
{
_scrollToByIndexOrItem = value;
OnPropertyChanged();
}
}
}

public string ScrollToItem
{
get => _scrollToItem;
set
{
if (_scrollToItem != value)
{
_scrollToItem = value;
OnPropertyChanged();
}
}
}

public int ScrollToIndex
{
get => _scrollToIndex;
set
{
if (_scrollToIndex != value)
{
_scrollToIndex = value;
OnPropertyChanged();
}
}
}

public object ItemsSource
{
get
Expand Down Expand Up @@ -592,8 +676,8 @@ private void LoadItems()
new Grouping<string, CollectionViewTestItem>("Fruits", new List<CollectionViewTestItem>()),
new Grouping<string, CollectionViewTestItem>("Vegetables", new List<CollectionViewTestItem>())
};
AddItems(_groupedList[0], 4, "Fruits");
AddItems(_groupedList[1], 4, "Vegetables");
AddItems(_groupedList[0], 20, "Fruits");
AddItems(_groupedList[1], 20, "Vegetables");

_observableCollection3 = new ObservableCollection<CollectionViewTestItem>();
AddItems(_observableCollection3, 15, "Fruits");
Expand All @@ -605,8 +689,8 @@ private void LoadItems()
new Grouping<string, CollectionViewTestItem>("Vegetables", new List<CollectionViewTestItem>())

};
AddItems(_groupedList3[0], 12, "Fruits");
AddItems(_groupedList3[1], 12, "Vegetables");
AddItems(_groupedList3[0], 25, "Fruits");
AddItems(_groupedList3[1], 25, "Vegetables");

_groupedList2 = new List<Grouping<string, ItemModel>>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,30 +12,84 @@

<Grid RowDefinitions="Auto, *">
<!-- Fixed Buttons Row -->
<StackLayout Grid.Row="0"
Spacing="40"
Padding="40">
<Button Text="Add"
Command="{Binding AddItemCommand}"
IsVisible="{Binding ShowAddRemoveButtons}"
WidthRequest="150"
AutomationId="AddButton"
VerticalOptions="Center"
HorizontalOptions="Center"/>
<StackLayout Grid.Row="0" Spacing="4" Padding="5">
<HorizontalStackLayout>
<Label Text="Scrolled Event: "/>
<Label x:Name="scrolledEventLabel" Text="Not Fired" AutomationId="ScrolledEventLabel"/>
</HorizontalStackLayout>
<HorizontalStackLayout Spacing="2">
<HorizontalStackLayout>
<Label Text="FirstIndex: "/>
<Label x:Name="firstIndexLabel" Text="0" AutomationId="FirstIndexLabel"/>
</HorizontalStackLayout>
<HorizontalStackLayout>
<Label Text="CenterIndex: "/>
<Label x:Name="centerIndexLabel" Text="0" AutomationId="CenterIndexLabel"/>
</HorizontalStackLayout>
<HorizontalStackLayout>
<Label Text="LastIndex: "/>
<Label x:Name="lastIndexLabel" Text="0" AutomationId="LastIndexLabel"/>
</HorizontalStackLayout>
</HorizontalStackLayout>
<HorizontalStackLayout>
<Label Text="ScrollToRequested Event: "/>
<Label x:Name="scrollToRequestedLabel" Text="Not Fired" AutomationId="ScrollToRequestedLabel"/>
</HorizontalStackLayout>

<HorizontalStackLayout Spacing="2">
<HorizontalStackLayout>
<Label Text="Index: "/>
<Label x:Name="indexLabel" Text="0" AutomationId="IndexLabel"/>
</HorizontalStackLayout>

<HorizontalStackLayout>
<Label Text="GroupIndex: " />
<Label x:Name="groupIndexLabel" Text="-1" AutomationId="GroupIndexLabel"/>
</HorizontalStackLayout>

<HorizontalStackLayout>
<Label Text="Item: "/>
<Label x:Name="itemLabel" Text="None" AutomationId="ItemLabel"/>
</HorizontalStackLayout>

<HorizontalStackLayout>
<Label Text="GroupName: "/>
<Label x:Name="groupLabel" Text="None" AutomationId="GroupLabel"/>
</HorizontalStackLayout>
</HorizontalStackLayout>

<HorizontalStackLayout>
<Label Text="RemainingItemsThresholdReached Event: "/>
<Label x:Name="remainingItemsThresholdLabel" Text="Not Fired" AutomationId="RemainingItemsThresholdLabel"/>
</HorizontalStackLayout>
<HorizontalStackLayout>
<Label Text="ReorderCompleted Event: "/>
<Label x:Name="reorderCompletedLabel" Text="Not Fired" AutomationId="ReorderCompletedLabel"/>
</HorizontalStackLayout>
<HorizontalStackLayout HorizontalOptions="Center" Spacing="10">
<Button Text="ScrollTo" Clicked="OnScrollToButtonClicked" WidthRequest="150" AutomationId="ScrollTo"/>
<Button Text="Add" Command="{Binding AddItemCommand}" IsVisible="{Binding ShowAddRemoveButtons}" WidthRequest="150" AutomationId="AddButton" VerticalOptions="Center" HorizontalOptions="Center" />
</HorizontalStackLayout>
</StackLayout>

<!-- Scrollable CollectionView Row -->
<local:CollectionView2 Grid.Row="1"
x:Name="collectionView"
FlowDirection="{Binding FlowDirection}"
ItemsSource="{Binding ItemsSource}"
ItemSizingStrategy="{Binding ItemSizingStrategy}"
ItemsUpdatingScrollMode="{Binding ItemsUpdatingScrollMode}"
ItemTemplate="{Binding ItemTemplate}"
IsGrouped="{Binding IsGrouped}"
GroupHeaderTemplate="{Binding GroupHeaderTemplate}"
ItemsLayout="{Binding ItemsLayout}"
AutomationId="CollectionViewControl">
</local:CollectionView2>
<local:CollectionView2 Grid.Row="1"
x:Name="collectionView"
FlowDirection="{Binding FlowDirection}"
CanReorderItems="{Binding CanReorderItems}"
ItemsSource="{Binding ItemsSource}"
ItemSizingStrategy="{Binding ItemSizingStrategy}"
ItemsUpdatingScrollMode="{Binding ItemsUpdatingScrollMode}"
ItemTemplate="{Binding ItemTemplate}"
IsGrouped="{Binding IsGrouped}"
GroupHeaderTemplate="{Binding GroupHeaderTemplate}"
ItemsLayout="{Binding ItemsLayout}"
Scrolled="OnScrolled"
ScrollToRequested="OnScrollToRequested"
RemainingItemsThreshold="5"
RemainingItemsThresholdReached="OnRemainingItemsThresholdReached"
ReorderCompleted="OnReorderCompleted"
AutomationId="CollectionViewControl">
</local:CollectionView2>
</Grid>
</ContentPage>
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,127 @@ private async void NavigateToOptionsPage_Clicked(object sender, EventArgs e)
{
BindingContext = _viewModel = new CollectionViewViewModel();
_viewModel.ItemsSourceType = ItemsSourceType.ObservableCollectionT3;
_viewModel.ScrollToPosition = ScrollToPosition.MakeVisible;
ResetScrollEventLabels();
await Navigation.PushAsync(new ScrollBehaviorOptionsPage(_viewModel));
}

public void ResetScrollEventLabels()
{
#if !WINDOWS // In Windows, CollectionView automatically moves to the first item when navigating to the page, so there is no need to scroll to the first item again.
collectionView.ScrollTo(0, position: ScrollToPosition.Start);
#endif
scrolledEventLabel.Text = "Not Fired";
scrollToRequestedLabel.Text = "Not Fired";
remainingItemsThresholdLabel.Text = "Not Fired";
reorderCompletedLabel.Text = "Not Fired";
firstIndexLabel.Text = "0";
centerIndexLabel.Text = "0";
lastIndexLabel.Text = "0";
indexLabel.Text = "0";
itemLabel.Text = "None";
groupIndexLabel.Text = "-1";
groupLabel.Text = "None";
}

private void OnScrolled(object sender, ItemsViewScrolledEventArgs e)
{
scrolledEventLabel.Text = "Fired";
firstIndexLabel.Text = e.FirstVisibleItemIndex.ToString();
centerIndexLabel.Text = e.CenterItemIndex.ToString();
lastIndexLabel.Text = e.LastVisibleItemIndex.ToString();
}

private void OnScrollToRequested(object sender, ScrollToRequestEventArgs e)
{
scrollToRequestedLabel.Text = "Fired";
indexLabel.Text = e.Index.ToString();
itemLabel.Text = (e.Item as CollectionViewViewModel.CollectionViewTestItem)?.Caption ?? "None";
groupIndexLabel.Text = e.GroupIndex.ToString();
groupLabel.Text = e.Group?.ToString() ?? "None";
}

private void OnScrollToButtonClicked(object sender, EventArgs e)
{
if (_viewModel.IsGrouped)
{
if (_viewModel.ScrollToByIndexOrItem == "Index")
{
ScrollToGroupedByIndex();
}
else
{
ScrollToGroupedByItem();
}
}
else
{
if (_viewModel.ScrollToByIndexOrItem == "Index")
{
ScrollToUngroupedByIndex();
}
else
{
ScrollToUngroupedByItem();
}
}
}

private void ScrollToGroupedByIndex()
{
if (_viewModel.ItemsSource is not List<Grouping<string, CollectionViewViewModel.CollectionViewTestItem>> groupedList)
return;

if (_viewModel.GroupIndex < 0 || _viewModel.GroupIndex >= groupedList.Count
|| _viewModel.ScrollToIndex < 0 || _viewModel.ScrollToIndex >= groupedList[_viewModel.GroupIndex].Count)
return;

collectionView.ScrollTo(groupIndex: _viewModel.GroupIndex, index: _viewModel.ScrollToIndex, position: _viewModel.ScrollToPosition, animate: true);
}

private void ScrollToGroupedByItem()
{
if (_viewModel.ItemsSource is not List<Grouping<string, CollectionViewViewModel.CollectionViewTestItem>> groupedList)
return;

// Find the selected group
var selectedGroup = groupedList.FirstOrDefault(g => g.Key == _viewModel.GroupName);
if (selectedGroup == null)
return;

// Find the item in the group
var targetItem = selectedGroup.FirstOrDefault(item => item.Caption == _viewModel.ScrollToItem);
if (targetItem == null)
return;

collectionView.ScrollTo(item: targetItem, group: selectedGroup.Key, position: _viewModel.ScrollToPosition, animate: true);
}

private void ScrollToUngroupedByIndex()
{
collectionView.ScrollTo(index: _viewModel.ScrollToIndex, position: _viewModel.ScrollToPosition, animate: true);
}

private void ScrollToUngroupedByItem()
{
if (_viewModel.ItemsSource is not ObservableCollection<CollectionViewViewModel.CollectionViewTestItem> items)
return;

// Find the item by caption
var targetItem = items.FirstOrDefault(x => x.Caption == _viewModel.ScrollToItem);
if (targetItem == null)
return;

collectionView.ScrollTo(item: targetItem, position: _viewModel.ScrollToPosition, animate: true);
}

private void OnRemainingItemsThresholdReached(object sender, EventArgs e)
{
remainingItemsThresholdLabel.Text = "Fired";
}

private void OnReorderCompleted(object sender, EventArgs e)
{
reorderCompletedLabel.Text = "Fired";
}
}
Loading
Loading