Shell fornisce la struttura di navigazione di un'app MAUI: schede, menu laterale e navigazione basata su rotte, simile agli indirizzi web.
La struttura dell'app
<Shell xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:views="clr-namespace:MiaApp.Views"
x:Class="MiaApp.AppShell">
<TabBar>
<ShellContent Title="Ordini" Icon="ordini.png" ContentTemplate="{DataTemplate views:OrdiniPage}" Route="ordini" />
<ShellContent Title="Profilo" Icon="profilo.png" ContentTemplate="{DataTemplate views:ProfiloPage}" Route="profilo" />
</TabBar>
</Shell>
Rotte per le pagine di dettaglio
public AppShell()
{
InitializeComponent();
Routing.RegisterRoute("ordini/dettaglio", typeof(DettaglioOrdinePage));
}
// da un ViewModel
await Shell.Current.GoToAsync("ordini/dettaglio", new ShellNavigationQueryParameters
{
["Ordine"] = ordineSelezionato
});
Ricevere i parametri
Il ViewModel della pagina di destinazione implementa IQueryAttributable e riceve gli oggetti passati, senza doverli serializzare in una stringa:
public partial class DettaglioOrdineViewModel : ObservableObject, IQueryAttributable
{
[ObservableProperty]
public partial Ordine? Ordine { get; set; }
public void ApplyQueryAttributes(IDictionary<string, object> query)
{
if (query.TryGetValue("Ordine", out var o)) Ordine = o as Ordine;
}
}
Tornare indietro
GoToAsync("..") torna alla pagina precedente e può passare anche lui parametri, utile per restituire una scelta fatta in una pagina di selezione.
Un consiglio: centralizza i nomi delle rotte in costanti. Una rotta scritta male si scopre solo quando l'utente tocca il pulsante.
Commenti (0)
Nessun commento ancora.