-
Notifications
You must be signed in to change notification settings - Fork 1.9k
[Enhancement] Shell Navigation and Structural Management #5166
Comments
I'm stuck on the same issue. I have a simple mvvm framework that I use and with the navigationpage I was able to integrate it in my framework so I could navigate from my viewmodel and respond to navigation events. |
@davidortinau as discussed at the MVP Summit this is a major blocker to any possible adoption of Shell by third party frameworks like Prism. Always happy to jump on a call with you and the team if it would help to clarify understanding around the issues. |
We are having similar issues to @dansiegel -- on the ReactiveUI MVVM framework we are delayed until the change are made. |
Thanks @dansiegel. FreshMvvm requires this also. Is this implementation being discussed? In FreshMvvm we are able to support the shell/url based navigation in Shell. We just need all the information in events when pushing back and forth. When navigating forward ideally: |
It would be nice to have the actual navigation handling decoupled from shell. It could be an interface that comes with a default implementation. Prism, FreshMvvm could implement their own and assign it to the Shell instance. An INavigator of sorts. And I would be ecstatic if I could implement something like flutters return values with it. (https://flutter.dev/docs/get-started/flutter-for/xamarin-forms-devs#how-do-i-navigate-between-pages) With regards to DI and BindingContexts it would be awesome to have it like Blazor: https://docs.microsoft.com/en-us/aspnet/core/blazor/dependency-injection?view=aspnetcore-3.0 and simply control it using attributes. |
If anyone wants to start playing with the API for this I will keep the nuget over here updated |
@PureWeen great work so far on this Issue. |
NOTE: FreshMvvm ( and others ) XF 4.2 Shell Nav not yet supported xamarin/Xamarin.Forms#5166
The developers have to choose either their favourite framework or shell until this issue is resolved. When should we expect this to be completed. |
Hi XF team. When the features will be available and released? Or any plan. We have a project in which I want to use Prism and Shell. The currently Shell page-to-page navigation and the way parameters are passing during navigation are really a blocker for us. We love Shell. It makes the app structure so simple and graceful. |
How would you go about implementing something akin to Prism's IDestructible interface? |
@dansiegel or @timahrentlov what are the conditions met that causes Destroy() to get called in Prism? Just want to make sure I'm answering @timahrentlov 's question correctly :-) |
@PureWeen |
@dansiegel that's what I thought So @timahrentlov basically that :-) The If you have 12 tabs going each with different navigation stacks that'll be inside that At the point anything gets removed from that |
Excellent! Thanks @dansiegel and @PureWeen |
For the time being this also limits using mobile Blazor bindings with external frameworks as that projects seems to plan support only for Shell. |
ITNOA Hi, @PureWeen What is the last state of this issue? is this issue move to MAUI? or done in MAUI? or it is plan to done here? thanks |
Nuget to play with
#6764
Shell Navigation and Structural Management
The core idea of this API is to expose the active structural state of the Shell as a model class that can be manipulated and applied to the shell.
ShellRouteState
Used to indicate the entire routing state of the shell. This contains all the branched stacks, the different paths that represent each different page, the paramteres to apply to those pages, how to transition to and away from those. The idea here is that you can setup an entire route state based on this data. All of this could be serialized during tombstoning as well to fully recreate the application. The renderer level can also take this in to see where the user is going and then at that point make decisions about what it wants to present and how
Properties
RoutePath
Signifies an individual stack path
Properties
PathPart
Signifies a specific part of the route that applies to a given shell element being navigated to. This also contains the parameters that will be applied to the particular shell part
Properties
Interfaces
IUriProjectionParser
IShellNavigationRequest
IShellContentCreator
IShellApplyParameters
hits the back button this will get called
IShellPartAppearing
IShellPartAppeared
IShellPartDisappeared
ShellNavigationArgs
Arguments passed to Navigating process indicating where I'm going to be going
Properties
ShellContentCreateArgs
Arguments passed to Shell Content creation.
Properties
ShellUriParserArgs
Arguments passed to Method that parses Uri to New Route Path
Properties
ShellLifecycleArgs
Arguments passed to various stages related to life cycle.
Properties
Examples
Custom Navigation Service example
Custom Navigation Service example
The ShellRoutePath can be interacted with in the same way as you would any other navigation
Existing work being done here please comment!!
#6542
Nuget to play with
debug.zip
Demos
https://github.com/PureWeen/ReactShell/blob/master/Source/SmartHotel.Clients/SmartHotel.Clients/Services/CustomNavigationServices.cs
Original Ticket
Summary
Currently there is no good way of easily integrating an App's framework into Shell. To make this easier a Handler should be provided so that a Framework can simply provide Forms a custom implementation for the core Navigation functionality.
API Changes
These methods should all be exposed though an Interface so that it could be potentially implemented in a stand alone service or on the Application itself since this is where you would most likely have a direct reference to a DI Container.
Intended Use Case
To allow frameworks like Prism to more easily integrate with Shell.
The text was updated successfully, but these errors were encountered: