using WPFluent.Controls;
namespace WPFluent;
///
/// Represents a contract with a that contains . Through defined service allows you to use the
/// Dependency Injection pattern in WPF UI navigation.
///
public interface INavigationService
{
///
/// Provides direct access to the control responsible for navigation.
///
/// Instance of the control.
INavigationView GetNavigationControl();
///
/// Navigates the NavigationView to the previous journal entry.
///
/// if the operation succeeds. otherwise.
bool GoBack();
///
/// Lets you navigate to the selected page based on it's type. Should be used with .
///
/// of the page.
/// if the operation succeeds. otherwise.
bool Navigate(Type pageType);
///
/// Lets you navigate to the selected page based on it's tag. Should be used with .
///
/// Id or tag of the page.
/// if the operation succeeds. otherwise.
bool Navigate(string pageIdOrTargetTag);
///
/// Lets you navigate to the selected page based on it's type, Should be used with .
///
/// of the page.
/// DataContext
/// if the operation succeeds. otherwise.
bool Navigate(Type pageType, object? dataContext);
///
/// Lets you navigate to the selected page based on it's tag. Should be used with .
///
/// Id or tag of the page.
/// DataContext
/// if the operation succeeds. otherwise.
bool Navigate(string pageIdOrTargetTag, object? dataContext);
///
/// Synchronously adds an element to the navigation stack and navigates current navigation Frame to the
///
/// Type of control to be synchronously added to the navigation stack
/// if the operation succeeds. otherwise.
bool NavigateWithHierarchy(Type pageType);
///
/// Synchronously adds an element to the navigation stack and navigates current navigation Frame to the
///
/// Type of control to be synchronously added to the navigation stack
/// DataContext
/// if the operation succeeds. otherwise.
bool NavigateWithHierarchy(Type pageType, object? dataContext);
///
/// Lets you attach the control that represents the .
///
/// Instance of the .
void SetNavigationControl(INavigationView navigation);
}