Skip to content
66 changes: 54 additions & 12 deletions api/Avalonia.nupkg.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- https://learn.microsoft.com/dotnet/fundamentals/package-validation/diagnostic-ids -->
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Suppression>
<DiagnosticId>CP0001</DiagnosticId>
<Target>T:Avalonia.Controls.Chrome.TitleBarDecorations</Target>
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0001</DiagnosticId>
<Target>T:Avalonia.Controls.Chrome.TitleBarDecorations</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Data.Core.UntypedBindingExpressionBase.get_IsDataValidationEnabled</Target>
Expand Down Expand Up @@ -67,18 +79,6 @@
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Data.Core.UntypedBindingExpressionBase.get_IsDataValidationEnabled</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Data.Core.UntypedBindingExpressionBase.Start</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Embedding.Offscreen.OffscreenTopLevelImplBase.SetFrameThemeVariant(Avalonia.Platform.PlatformThemeVariant)</Target>
Expand All @@ -97,6 +97,18 @@
<Left>baseline/Avalonia/lib/net10.0/Avalonia.OpenGL.dll</Left>
<Right>current/Avalonia/lib/net10.0/Avalonia.OpenGL.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Data.Core.UntypedBindingExpressionBase.get_IsDataValidationEnabled</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Data.Core.UntypedBindingExpressionBase.Start</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Input.PointerEventArgs.#ctor(Avalonia.Interactivity.RoutedEvent,System.Object,Avalonia.Input.IPointer,Avalonia.Visual,Avalonia.Point,System.UInt64,Avalonia.Input.PointerPointProperties,Avalonia.Input.KeyModifiers,System.Lazy{System.Collections.Generic.IReadOnlyList{Avalonia.Input.Raw.RawPointerPoint}})</Target>
Expand Down Expand Up @@ -151,6 +163,36 @@
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>F:Avalonia.Controls.Chrome.WindowDrawnDecorations.TitleBarDecorationsProperty</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Chrome.WindowDrawnDecorations.get_TitleBarDecorations</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Chrome.WindowDrawnDecorations.GetTitleBarDecorations(Avalonia.StyledElement)</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Chrome.WindowDrawnDecorations.set_TitleBarDecorations(Avalonia.Controls.Chrome.TitleBarDecorations)</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Chrome.WindowDrawnDecorations.SetTitleBarDecorations(Avalonia.StyledElement,Avalonia.Controls.Chrome.TitleBarDecorations)</Target>
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Avalonia.Controls.Embedding.Offscreen.OffscreenTopLevelImplBase.SetFrameThemeVariant(Avalonia.Platform.PlatformThemeVariant)</Target>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using ControlCatalog.Pages;
using Avalonia.Media;
using ControlCatalog.Models;
using System.Threading.Tasks;

namespace ControlCatalog.ViewModels;

Expand Down Expand Up @@ -137,5 +138,7 @@ private class HomeSectionBuilder(string title) : List<PageItem>
var iconGeometry = StreamGeometry.Parse(iconPath);
Add(new PageItem(header, () => new TPageType(), iconGeometry, description, title));
}

public async virtual Task Navigate(INavigation navigation) { }
}
}
16 changes: 16 additions & 0 deletions src/Avalonia.Controls/Page/INavigation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

namespace Avalonia.Controls
{

/// <summary>
/// Provides navigation operations for stack-based and modal page navigation.
/// Exposed via <see cref="Page.Navigation"/> when a page is hosted in a NavigationPage.
Expand Down Expand Up @@ -44,6 +45,11 @@ public interface INavigation
/// </summary>
Task PushAsync(Page page, IPageTransition? transition);

/// <summary>
/// Pushes <paramref name="page"/> using <paramref name="transition"/> with optional <paramref name="parameter"/>.
/// </summary>
Task PushAsync(Page page, IPageTransition? transition, object? parameter) => Task.CompletedTask;

/// <summary>
/// Pops the top page using the host's default transition.
/// </summary>
Expand Down Expand Up @@ -84,6 +90,11 @@ public interface INavigation
/// </summary>
Task ReplaceAsync(Page page, IPageTransition? transition);

/// <summary>
/// Replaces the current top page with <paramref name="page"/> using <paramref name="transition"/> with optional <paramref name="parameter"/>.
/// </summary>
Task ReplaceAsync(Page page, IPageTransition? transition, object? parameter) => Task.CompletedTask;

/// <summary>
/// Pushes <paramref name="page"/> as a modal using the host's modal transition.
/// </summary>
Expand All @@ -94,6 +105,11 @@ public interface INavigation
/// </summary>
Task PushModalAsync(Page page, IPageTransition? transition);

/// <summary>
/// Pushes <paramref name="page"/> as a modal using <paramref name="transition"/> with optional <paramref name="parameter"/>.
/// </summary>
Task PushModalAsync(Page page, IPageTransition? transition, object? parameter) => Task.CompletedTask;

/// <summary>
/// Pops the top modal page using the host's modal transition.
/// </summary>
Expand Down
8 changes: 8 additions & 0 deletions src/Avalonia.Controls/Page/NavigatedFromEventArgs.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Reflection.Metadata;

namespace Avalonia.Controls
{
Expand All @@ -18,6 +19,11 @@ public NavigatedFromEventArgs(Page? destinationPage, NavigationType navigationTy
NavigationType = navigationType;
}

public NavigatedFromEventArgs(Page? destinationPage, NavigationType navigationType, object? parameter) : this(destinationPage, navigationType)
{
Parameter = parameter;
}

/// <summary>
/// Gets the page that became active after this navigation.
/// </summary>
Expand All @@ -27,5 +33,7 @@ public NavigatedFromEventArgs(Page? destinationPage, NavigationType navigationTy
/// Gets the type of navigation that triggered this event.
/// </summary>
public NavigationType NavigationType { get; }

public object? Parameter { get; }
}
}
7 changes: 7 additions & 0 deletions src/Avalonia.Controls/Page/NavigatedToEventArgs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ public NavigatedToEventArgs(Page? previousPage, NavigationType navigationType)
NavigationType = navigationType;
}

public NavigatedToEventArgs(Page? previousPage, NavigationType navigationType, object? parameter) : this (previousPage, navigationType)
{
Parameter = parameter;
}

/// <summary>
/// Gets the page that was active before this navigation.
/// </summary>
Expand All @@ -27,5 +32,7 @@ public NavigatedToEventArgs(Page? previousPage, NavigationType navigationType)
/// Gets the type of navigation that triggered this event.
/// </summary>
public NavigationType NavigationType { get; }

public object? Parameter { get; }
}
}
7 changes: 7 additions & 0 deletions src/Avalonia.Controls/Page/NavigatingFromEventArgs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ public NavigatingFromEventArgs(Page? destinationPage, NavigationType navigationT
NavigationType = navigationType;
}

public NavigatingFromEventArgs(Page? destinationPage, NavigationType navigationType, object? parameter) : this(destinationPage, navigationType)
{
Parameter = parameter;
}

/// <summary>
/// Gets the page that will become active after this navigation.
/// </summary>
Expand All @@ -32,5 +37,7 @@ public NavigatingFromEventArgs(Page? destinationPage, NavigationType navigationT
/// Gets or sets a value indicating whether the navigation should be cancelled.
/// </summary>
public bool Cancel { get; set; }

public object? Parameter { get; }
}
}
8 changes: 8 additions & 0 deletions src/Avalonia.Controls/Page/NavigationEventArgs.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Reflection.Metadata;

namespace Avalonia.Controls
{
Expand All @@ -18,6 +19,11 @@ public NavigationEventArgs(Page page, NavigationType navigationType)
NavigationType = navigationType;
}

public NavigationEventArgs(Page page, NavigationType navigationType, object? parameter) : this(page, navigationType)
{
Parameter = parameter;
}

/// <summary>
/// Gets the page involved in the navigation operation.
/// </summary>
Expand All @@ -27,5 +33,7 @@ public NavigationEventArgs(Page page, NavigationType navigationType)
/// Gets the type of navigation that triggered this event.
/// </summary>
public NavigationType NavigationType { get; }

public object? Parameter { get; }
}
}
Loading