File: Shell\IShellController.cs
Web Access
Project: src\src\Controls\src\Core\Controls.Core.csproj (Microsoft.Maui.Controls)
#nullable disable
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Threading.Tasks;
 
namespace Microsoft.Maui.Controls
{
	public interface IAppearanceObserver
	{
		void OnAppearanceChanged(ShellAppearance appearance);
	}
 
	public interface IFlyoutBehaviorObserver
	{
		void OnFlyoutBehaviorChanged(FlyoutBehavior behavior);
	}
 
	public interface IShellController : IPageController
	{
		event EventHandler StructureChanged;
		event EventHandler FlyoutItemsChanged;
 
		View FlyoutHeader { get; }
 
		View FlyoutFooter { get; }
 
		View FlyoutContent { get; }
 
		ImageSource FlyoutIcon { get; }
 
		void AddAppearanceObserver(IAppearanceObserver observer, Element pivot);
 
		void AddFlyoutBehaviorObserver(IFlyoutBehaviorObserver observer);
 
		void AppearanceChanged(Element source, bool appearanceSet);
 
		List<List<Element>> GenerateFlyoutGrouping();
 
		ShellNavigationState GetNavigationState(ShellItem shellItem, ShellSection shellSection, ShellContent shellContent, bool includeStack = true);
 
		void OnFlyoutItemSelected(Element element);
 
		Task OnFlyoutItemSelectedAsync(Element element);
 
		bool ProposeNavigation(ShellNavigationSource source, ShellItem item, ShellSection shellSection, ShellContent shellContent, IReadOnlyList<Page> stack, bool canCancel);
 
		bool RemoveAppearanceObserver(IAppearanceObserver observer);
 
		bool RemoveFlyoutBehaviorObserver(IFlyoutBehaviorObserver observer);
 
		void UpdateCurrentState(ShellNavigationSource source);
 
		ReadOnlyCollection<ShellItem> GetItems();
 
		event NotifyCollectionChangedEventHandler ItemsCollectionChanged;
 
		DataTemplate GetFlyoutItemDataTemplate(BindableObject bo);
	}
}