/* Based on Windows UI Library
Copyright(c) Microsoft Corporation.All rights reserved. */
using System.Collections;
using System.Windows.Controls;
// ReSharper disable once CheckNamespace
namespace WPFluent.Controls;
///
/// Represents the container for an item in a NavigationView control.
///
public interface INavigationViewItem
{
///
/// Add / Remove ClickEvent handler.
///
[Category("Behavior")]
event RoutedEventHandler Click;
internal bool IsMenuElement { get; set; }
///
/// Correctly activates
///
void Activate(INavigationView navigationView);
///
/// Correctly deactivates
///
void Deactivate(INavigationView navigationView);
///
/// Gets or sets the content
///
object Content { get; set; }
///
/// Gets or sets the icon displayed in the MenuItem object.
///
IconElement? Icon { get; set; }
///
/// Gets the unique identifier that allows the item to be located in the navigation.
///
string Id { get; }
InfoBadge? InfoBadge { get; set; }
///
/// Gets a value indicating whether the current element is active.
///
bool IsActive { get; }
///
/// Gets or sets a value indicating whether the sub- are expanded.
///
bool IsExpanded { get; internal set; }
///
/// Gets the collection of menu items displayed in the NavigationView.
///
IList MenuItems { get; }
///
/// Gets or sets an object source used to generate the content of the NavigationView menu.
///
object? MenuItemsSource { get; set; }
///
/// Gets or sets the caching characteristics for a page involved in a navigation.
///
NavigationCacheMode NavigationCacheMode { get; set; }
///
/// Gets or sets the parent if it's in collection
///
INavigationViewItem? NavigationViewItemParent { get; internal set; }
///
/// Gets or sets the unique tag used by the parent navigation system for the purpose of searching and navigating.
///
string TargetPageTag { get; set; }
///
/// Gets or sets the type of the page to be navigated. (Should be derived from ).
///
Type? TargetPageType { get; set; }
///
/// Gets or sets the template property
///
ControlTemplate? Template { get; set; }
}