Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
10b65f8
[Testing] Fix for flaky UITests CookiesCorrectlyLoadWithMultipleWebVi…
TamilarasanSF4853 Oct 1, 2025
d6bbe9d
[iOS] Fix added for Navigation.SetTitleView does not work in ios 26. …
sheiksyedm Oct 1, 2025
1206ef5
[testing] Update androidApiLevels for device tests (#31827)
rmarinho Oct 1, 2025
11ce8c9
Add reference (#31669)
MartyIX Oct 5, 2025
082d25a
[Windows, Catalyst] Fix IsPresented=true Not Working on Initial Value…
devanathan-vaithiyanathan Oct 5, 2025
3d3f594
Temporarily disable flaky WebView tests using FlakyTest attribute (#3…
Copilot Oct 6, 2025
ba41e49
Invert NavigationPage UseMauiHandler flag (#31859)
drasticactions Oct 6, 2025
bf850e0
Update dependencies from https://github.com/dotnet/xharness build 202…
dotnet-maestro[bot] Oct 6, 2025
689f525
[c] Run apiscan on release branches and main (#31903)
rmarinho Oct 7, 2025
ae3af22
Update FlyoutViewHandler.Windows.cs (#31896)
devanathan-vaithiyanathan Oct 7, 2025
f3a11af
[testing] Don t test api28 (#31907)
rmarinho Oct 8, 2025
d9ba884
[Testing] Fix for flaky test(CollectionViewHeaderShouldNotScroll) in …
HarishKumarSF4517 Oct 9, 2025
4906519
Update Syncfusion.Maui.Toolkit package version to 1.0.7 (#31932)
PaulAndersonS Oct 9, 2025
e6dd13e
Update README with .NET MAUI app creation instructions (#31738)
davidortinau Oct 9, 2025
37aef27
Fix ProjectList not displaying due to missing BindingContext update i…
Vignesh-SF3580 Oct 10, 2025
a8a818e
[Android] -Picker dialog causes crash when page is popped while dialo…
sheiksyedm Oct 10, 2025
4615c94
[Testing] Fix for flaky test(EntrySelectionLengthRuntimeUpdate) in CI…
HarishKumarSF4517 Oct 13, 2025
1e56eca
[ci] Update arcade main (#31978)
rmarinho Oct 13, 2025
ad506dc
[Android][Regression] Fixed Entry and Editor AppThemeBinding colors f…
TamilarasanSF4853 Oct 13, 2025
a0a6311
[ci] Try set networkIsolationPolicy Preferred (#31988)
rmarinho Oct 14, 2025
922b3b2
Fix memory leak in CollectionView and CarouselView by using instance-…
Copilot Oct 14, 2025
ba96840
[ci] Try Permissive (#31989)
rmarinho Oct 14, 2025
3e8446c
[ci] Enable private feeds again (#31991)
rmarinho Oct 14, 2025
97ef945
[create-pull-request] automated change
github-actions[bot] Oct 15, 2025
641945f
[housekeeping] Automated PR to fix formatting errors on main (#31993)
rmarinho Oct 15, 2025
1240586
Update coverage.runsettings to include only Microsoft.Maui DLLs for c…
rmarinho Oct 15, 2025
17f4baf
Add RC2 and SR12 to bug templates (#32006)
PureWeen Oct 15, 2025
e9d69ec
[Windows] Fix CollectionView selected item visibility (#31126)
Vignesh-SF3580 Oct 15, 2025
b1f5361
Update dependencies from https://github.com/dotnet/xharness build 202…
dotnet-maestro[bot] Oct 15, 2025
1596b7c
[ci] Always install the universal iOS simulators. (#32003)
rolfbjarne Oct 15, 2025
0ea6ee1
Migrate SourceGen unit tests from NUnit to xUnit (#32009)
Copilot Oct 18, 2025
ce6f0a7
Merge branch 'main' into merge_main_into_net10
PureWeen Oct 19, 2025
60513de
Update some sourcegen tests
rmarinho Oct 19, 2025
c94dbee
Merge branch 'net10.0' into merge_main_into_net10
rmarinho Oct 20, 2025
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
6 changes: 6 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ body:
label: Version with bug
description: In what version do you see this issue? Run `dotnet workload list` to find your version.
options:
- 10.0.0-rc.2
- 10.0.0-rc.1
- 10.0.0-preview.7
- 10.0.0-preview.6
Expand All @@ -50,6 +51,8 @@ body:
- 10.0.0-preview.3
- 10.0.0-preview.2
- 10.0.0-preview.1
- 9.0.110 SR12
- 9.0.111 SR11.1
- 9.0.110 SR11
- 9.0.100 SR10
- 9.0.90 SR9
Expand Down Expand Up @@ -133,6 +136,8 @@ body:
- 9.0.90 SR9
- 9.0.100 SR10
- 9.0.110 SR11
- 9.0.111 SR11.1
- 9.0.120 SR12
- 10.0.0-preview.1
- 10.0.0-preview.2
- 10.0.0-preview.3
Expand All @@ -141,6 +146,7 @@ body:
- 10.0.0-preview.6
- 10.0.0-preview.7
- 10.0.0-rc.1
- 10.0.0-rc.2
validations:
required: true
- type: dropdown
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
* [.NET MAUI Samples](https://github.com/dotnet/maui-samples)
* [Development Guide](./.github/DEVELOPMENT.md)

Create a new app with `dotnet new maui -n NewApp` or a [sample app](https://github.com/dotnet/maui-samples/tree/main/10.0/Apps/DeveloperBalance#developer-balance) with `dotnet new maui -n NewApp -sc` that includes the [open-source Syncfusion Toolkit for .NET MAUI](https://www.syncfusion.com/net-maui-toolkit?utm_source=msftdotnet&utm_medium=banner&utm_campaign=mauipremium_sep25) with over 30 additional controls, the [.NET MAUI Community Toolkit](https://github.com/CommunityToolkit/Maui) with tons of helpers and views, and [MVVM Toolkit](https://github.com/CommunityToolkit/dotnet).

## Overview

.NET Multi-platform App UI (.NET MAUI) is the evolution of Xamarin.Forms that expand capabilities beyond mobile Android and iOS into desktop apps for Windows and macOS. With .NET MAUI, you can build apps that perform great on any device that runs Windows, macOS, Android, & iOS from a single codebase. Coupled with Visual Studio productivity tools and emulators, .NET and Visual Studio significantly speed up the development process for building apps that target the widest possible set of devices. Use a single development stack that supports the best-of-breed solutions for all modern workloads with a unified SDK, base class libraries, and a toolchain. [Read More](https://docs.microsoft.com/dotnet/maui/what-is-maui)
Expand Down
19 changes: 19 additions & 0 deletions coverage.runsettings
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectionProviders>
<DataCollectionProvider friendlyName="Code Coverage">
<Configuration>
<Module>
<Exclude>
<Module name="*" />
</Exclude>
<Include>
<Module name="Microsoft.Maui*.dll" />
</Include>
</Module>
</Configuration>
</DataCollectionProvider>
</DataCollectionProviders>
</DataCollectionRunSettings>
</RunSettings>
4 changes: 4 additions & 0 deletions eng/common/core-templates/job/source-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ parameters:
# container and pool.
platform: {}

# Optional list of directories to ignore for component governance scans.
componentGovernanceIgnoreDirectories: []

is1ESPipeline: ''

# If set to true and running on a non-public project,
Expand Down Expand Up @@ -94,3 +97,4 @@ jobs:
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
platform: ${{ parameters.platform }}
componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
5 changes: 5 additions & 0 deletions eng/common/core-templates/jobs/source-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ parameters:
# one job runs on 'defaultManagedPlatform'.
platforms: []

# Optional list of directories to ignore for component governance scans.
componentGovernanceIgnoreDirectories: []

is1ESPipeline: ''

# If set to true and running on a non-public project,
Expand All @@ -31,6 +34,7 @@ jobs:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
jobNamePrefix: ${{ parameters.jobNamePrefix }}
platform: ${{ platform }}
componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
enableInternalSources: ${{ parameters.enableInternalSources }}

- ${{ if eq(length(parameters.platforms), 0) }}:
Expand All @@ -39,4 +43,5 @@ jobs:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
jobNamePrefix: ${{ parameters.jobNamePrefix }}
platform: ${{ parameters.defaultManagedPlatform }}
componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
enableInternalSources: ${{ parameters.enableInternalSources }}
1 change: 1 addition & 0 deletions eng/common/core-templates/steps/get-delegation-sas.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ steps:
inputs:
azureSubscription: ${{ parameters.federatedServiceConnection }}
scriptType: 'pscore'
addSpnToEnvironment: true
Copy link

Copilot AI Oct 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same concern: addSpnToEnvironment: true unnecessarily exposes credentials. Prefer omitting unless a downstream script explicitly consumes those variables.

Suggested change
addSpnToEnvironment: true

Copilot uses AI. Check for mistakes.
scriptLocation: 'inlineScript'
inlineScript: |
# Calculate the expiration of the SAS token and convert to UTC
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ steps:
inputs:
azureSubscription: ${{ parameters.federatedServiceConnection }}
scriptType: 'pscore'
addSpnToEnvironment: true
Copy link

Copilot AI Oct 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

addSpnToEnvironment: true exposes service principal credentials as environment variables to subsequent steps, increasing potential for leakage. Remove or limit scope unless downstream steps require them explicitly.

Suggested change
addSpnToEnvironment: true

Copilot uses AI. Check for mistakes.
scriptLocation: 'inlineScript'
inlineScript: |
$accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv
Expand Down
6 changes: 5 additions & 1 deletion eng/pipelines/arcade/setup-test-env.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,11 @@ steps:
xcrun xcode-select --print-path
xcodebuild -version
sudo xcodebuild -license accept
sudo xcodebuild -downloadPlatform iOS
if [[ ${XCODE_VERSION/\.*/} -ge 26 ]]; then
sudo xcodebuild -downloadPlatform iOS -architectureVariant universal
else
sudo xcodebuild -downloadPlatform iOS
fi
sudo xcodebuild -runFirstLaunch
displayName: Select Xcode Version
condition: and(succeeded(), eq(variables['Agent.OS'], 'Darwin'))
Expand Down
2 changes: 2 additions & 0 deletions eng/pipelines/maui-release-internal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ extends:
${{ else }}:
template: v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplates
parameters:
settings:
networkIsolationPolicy: Permissive
pool: ${{ parameters.VM_IMAGE_HOST }}
sdl:
binskim:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,11 @@ public override void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
Page.SendAppearing();
if (!_intialLayoutFinished)
{
_intialLayoutFinished = true;
SetInitialPresented();
}
}

public override void ViewDidDisappear(bool animated)
Expand Down Expand Up @@ -158,19 +163,6 @@ void SetInitialPresented()
UpdateLeftBarButton();
}

public override void ViewWillLayoutSubviews()
{
// Orientation doesn't seem to be set to a stable correct value until here.
// So, we officially process orientation here.
if (!_intialLayoutFinished)
{
_intialLayoutFinished = true;
SetInitialPresented();
}

base.ViewWillLayoutSubviews();
}

public override void ViewDidLoad()
Comment on lines 163 to 166
Copy link

Copilot AI Oct 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The override ViewWillLayoutSubviews() was removed (previously handled initial layout completion); this coupled with API removal constitutes a breaking behavioral change. If external code depended on that override timing, initialization now occurs in ViewDidAppear. Consider keeping the override and delegating to new logic for backward compatibility.

Copilot uses AI. Check for mistakes.
{
base.ViewDidLoad();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2089,7 +2089,13 @@ class Container : UIView

public Container(View view, UINavigationBar bar) : base(bar.Bounds)
{
if (OperatingSystem.IsIOSVersionAtLeast(11) || OperatingSystem.IsMacCatalystVersionAtLeast(11))
// For iOS 26+, we need to use autoresizing masks instead of constraints to ensure proper TitleView display
if (OperatingSystem.IsIOSVersionAtLeast(26) || OperatingSystem.IsMacCatalystVersionAtLeast(26))
{
TranslatesAutoresizingMaskIntoConstraints = true;
AutoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth;
}
else if (OperatingSystem.IsIOSVersionAtLeast(11) || OperatingSystem.IsMacCatalystVersionAtLeast(11))
{
TranslatesAutoresizingMaskIntoConstraints = false;
}
Expand Down Expand Up @@ -2178,7 +2184,9 @@ public override CGRect Frame
{
if (Superview != null)
{
if (!(OperatingSystem.IsIOSVersionAtLeast(11) || OperatingSystem.IsMacCatalystVersionAtLeast(11)))
// For iOS 26+ and pre-iOS 11, we use autoresizing masks and need to adjust the frame manually
if (OperatingSystem.IsIOSVersionAtLeast(26) || OperatingSystem.IsMacCatalystVersionAtLeast(26) ||
!(OperatingSystem.IsIOSVersionAtLeast(11) || OperatingSystem.IsMacCatalystVersionAtLeast(11)))
{
value.Y = Superview.Bounds.Y;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ public partial class StructuredItemsViewHandler<TItemsView> : ItemsViewHandler<T
View _currentFooter;
WeakNotifyPropertyChangedProxy _layoutPropertyChangedProxy;
PropertyChangedEventHandler _layoutPropertyChanged;
const string ListViewItemStyleKey = "DefaultListViewItemStyle";
const string GridViewItemStyleKey = "DefaultGridViewItemStyle";
static WStyle _listViewItemStyle;
static WStyle _gridViewItemStyle;

~StructuredItemsViewHandler() => _layoutPropertyChangedProxy?.Unsubscribe();

Expand Down Expand Up @@ -79,6 +83,9 @@ public static void MapItemSizingStrategy(StructuredItemsViewHandler<TItemsView>

protected override ListViewBase SelectListViewBase()
{
_listViewItemStyle = GetDefaultStyle(ListViewItemStyleKey);
_gridViewItemStyle = GetDefaultStyle(GridViewItemStyleKey);

switch (VirtualView.ItemsLayout)
{
case GridItemsLayout gridItemsLayout:
Expand Down Expand Up @@ -242,20 +249,35 @@ static WStyle GetItemContainerStyle(GridItemsLayout layout)

var style = new WStyle(typeof(GridViewItem));

if (_gridViewItemStyle is not null)
{
style.BasedOn = _gridViewItemStyle;
}

style.Setters.Add(new WSetter(FrameworkElement.MarginProperty, margin));
style.Setters.Add(new WSetter(Control.PaddingProperty, WinUIHelpers.CreateThickness(0)));
style.Setters.Add(new WSetter(Control.HorizontalContentAlignmentProperty, HorizontalAlignment.Stretch));

return style;
}

static WStyle GetDefaultStyle(string resourceKey)
{
return Microsoft.UI.Xaml.Application.Current.Resources[resourceKey] as WStyle;
}

static WStyle GetVerticalItemContainerStyle(LinearItemsLayout layout)
{
var v = layout?.ItemSpacing ?? 0;
var margin = WinUIHelpers.CreateThickness(0, v, 0, v);

var style = new WStyle(typeof(ListViewItem));

if (_listViewItemStyle is not null)
{
style.BasedOn = _listViewItemStyle;
}

style.Setters.Add(new WSetter(FrameworkElement.MinHeightProperty, 0));
style.Setters.Add(new WSetter(FrameworkElement.MarginProperty, margin));
style.Setters.Add(new WSetter(Control.PaddingProperty, WinUIHelpers.CreateThickness(0)));
Expand All @@ -271,6 +293,11 @@ static WStyle GetHorizontalItemContainerStyle(LinearItemsLayout layout)

var style = new WStyle(typeof(ListViewItem));

if (_listViewItemStyle is not null)
{
style.BasedOn = _listViewItemStyle;
}

style.Setters.Add(new WSetter(FrameworkElement.MinWidthProperty, 0));
style.Setters.Add(new WSetter(Control.PaddingProperty, padding));
style.Setters.Add(new WSetter(Control.VerticalContentAlignmentProperty, VerticalAlignment.Stretch));
Expand Down
4 changes: 2 additions & 2 deletions src/Controls/src/Core/Items/CarouselLayoutTypeConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina

if (strValue == "HorizontalList")
{
return LinearItemsLayout.CarouselDefault;
return LinearItemsLayout.CreateCarouselHorizontalDefault();
}

if (strValue == "VerticalList")
{
return LinearItemsLayout.CarouselVertical;
return LinearItemsLayout.CreateCarouselVerticalDefault();
}
Comment on lines 19 to 28
Copy link

Copilot AI Oct 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same allocation issue: each conversion creates a new layout instance (with snap point properties), increasing GC pressure. Prefer returning the existing static CarouselDefault/CarouselVertical instances or introduce caching.

Copilot uses AI. Check for mistakes.

throw new InvalidOperationException($"Cannot convert \"{strValue}\" into {typeof(LinearItemsLayout)}");
Expand Down
2 changes: 1 addition & 1 deletion src/Controls/src/Core/Items/CarouselView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ public object PositionChangedCommandParameter
/// <summary>Bindable property for <see cref="ItemsLayout"/>.</summary>
public static readonly BindableProperty ItemsLayoutProperty =
BindableProperty.Create(nameof(ItemsLayout), typeof(LinearItemsLayout), typeof(ItemsView),
LinearItemsLayout.CarouselDefault);
null, defaultValueCreator: (b) => LinearItemsLayout.CreateCarouselHorizontalDefault());

/// <include file="../../../docs/Microsoft.Maui.Controls/CarouselView.xml" path="//Member[@MemberName='ItemsLayout']/Docs/*" />
[System.ComponentModel.TypeConverter(typeof(CarouselLayoutTypeConverter))]
Expand Down
4 changes: 2 additions & 2 deletions src/Controls/src/Core/Items/ItemsLayoutTypeConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina

if (strValue == "VerticalList")
{
return LinearItemsLayout.Vertical;
return LinearItemsLayout.CreateVerticalDefault();
}
else if (strValue == "HorizontalList")
{
return LinearItemsLayout.Horizontal;
return LinearItemsLayout.CreateHorizontalDefault();
}
Comment on lines 26 to 34
Copy link

Copilot AI Oct 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Converter now allocates a new LinearItemsLayout for each conversion instead of returning cached static instances, increasing allocations for repeated XAML parsing. Consider reverting to shared static instances (Vertical/Horizontal) or caching created layouts.

Copilot uses AI. Check for mistakes.
else if (strValue.StartsWith("VerticalGrid", StringComparison.Ordinal))
{
Expand Down
3 changes: 2 additions & 1 deletion src/Controls/src/Core/Items/ItemsView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ public int RemainingItemsThreshold

internal static readonly BindableProperty InternalItemsLayoutProperty =
BindableProperty.Create(nameof(ItemsLayout), typeof(IItemsLayout), typeof(ItemsView),
LinearItemsLayout.Vertical, propertyChanged: OnInternalItemsLayoutPropertyChanged);
null, propertyChanged: OnInternalItemsLayoutPropertyChanged,
defaultValueCreator: (b) => LinearItemsLayout.CreateVerticalDefault());
Comment on lines 114 to +117
Copy link

Copilot AI Oct 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing the default from a shared static instance (LinearItemsLayout.Vertical) to a per-instance defaultValueCreator alters reference equality semantics. Code comparing ItemsLayout == LinearItemsLayout.Vertical will now fail, which is a subtle breaking change; consider documenting or preserving original instance for compatibility.

Copilot uses AI. Check for mistakes.

static void OnInternalItemsLayoutPropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
Expand Down
36 changes: 24 additions & 12 deletions src/Controls/src/Core/Items/LinearItemsLayout.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,14 @@ public LinearItemsLayout([Parameter("Orientation")] ItemsLayoutOrientation orien
}

/// <include file="../../../docs/Microsoft.Maui.Controls/LinearItemsLayout.xml" path="//Member[@MemberName='Vertical']/Docs/*" />
public static readonly IItemsLayout Vertical = new LinearItemsLayout(ItemsLayoutOrientation.Vertical);
public static readonly IItemsLayout Vertical = CreateVerticalDefault();
/// <include file="../../../docs/Microsoft.Maui.Controls/LinearItemsLayout.xml" path="//Member[@MemberName='Horizontal']/Docs/*" />
public static readonly IItemsLayout Horizontal = new LinearItemsLayout(ItemsLayoutOrientation.Horizontal);
public static readonly IItemsLayout Horizontal = CreateHorizontalDefault();

/// <include file="../../../docs/Microsoft.Maui.Controls/LinearItemsLayout.xml" path="//Member[@MemberName='CarouselVertical']/Docs/*" />
public static readonly IItemsLayout CarouselVertical = new LinearItemsLayout(ItemsLayoutOrientation.Vertical)
{
SnapPointsType = SnapPointsType.MandatorySingle,
SnapPointsAlignment = SnapPointsAlignment.Center
};
public static readonly IItemsLayout CarouselVertical = CreateCarouselVerticalDefault();

internal static readonly LinearItemsLayout CarouselDefault = new LinearItemsLayout(ItemsLayoutOrientation.Horizontal)
{
SnapPointsType = SnapPointsType.MandatorySingle,
SnapPointsAlignment = SnapPointsAlignment.Center
};
internal static readonly LinearItemsLayout CarouselDefault = CreateCarouselHorizontalDefault();

/// <summary>Bindable property for <see cref="ItemSpacing"/>.</summary>
public static readonly BindableProperty ItemSpacingProperty =
Expand All @@ -40,5 +32,25 @@ public double ItemSpacing
get => (double)GetValue(ItemSpacingProperty);
set => SetValue(ItemSpacingProperty, value);
}

internal static LinearItemsLayout CreateVerticalDefault()
=> new LinearItemsLayout(ItemsLayoutOrientation.Vertical);

internal static LinearItemsLayout CreateHorizontalDefault()
=> new LinearItemsLayout(ItemsLayoutOrientation.Horizontal);

internal static LinearItemsLayout CreateCarouselVerticalDefault()
=> new LinearItemsLayout(ItemsLayoutOrientation.Vertical)
{
SnapPointsType = SnapPointsType.MandatorySingle,
SnapPointsAlignment = SnapPointsAlignment.Center
};

internal static LinearItemsLayout CreateCarouselHorizontalDefault()
=> new LinearItemsLayout(ItemsLayoutOrientation.Horizontal)
{
SnapPointsType = SnapPointsType.MandatorySingle,
SnapPointsAlignment = SnapPointsAlignment.Center
};
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#nullable enable
#nullable enable
*REMOVED*override Microsoft.Maui.Controls.Handlers.Compatibility.PhoneFlyoutPageRenderer.ViewWillLayoutSubviews() -> void
*REMOVED*Microsoft.Maui.Controls.Accelerator
*REMOVED*~Microsoft.Maui.Controls.Accelerator.Keys.get -> System.Collections.Generic.IEnumerable<string>
*REMOVED*~Microsoft.Maui.Controls.Accelerator.Keys.set -> void
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#nullable enable
#nullable enable
*REMOVED*override Microsoft.Maui.Controls.Handlers.Compatibility.PhoneFlyoutPageRenderer.ViewWillLayoutSubviews() -> void
*REMOVED*Microsoft.Maui.Controls.Accelerator
*REMOVED*~Microsoft.Maui.Controls.Accelerator.Keys.get -> System.Collections.Generic.IEnumerable<string>
*REMOVED*~Microsoft.Maui.Controls.Accelerator.Keys.set -> void
Expand Down
Loading
Loading