You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

52 lines
1.4 KiB

using AuroraDesk.Core.Entities;
using System.Collections.ObjectModel;
namespace AuroraDesk.Core.Interfaces;
/// <summary>
/// 导航状态管理服务接口
/// 负责管理导航项的选中和展开状态,分离状态管理职责
/// </summary>
public interface INavigationStateService
{
/// <summary>
/// 初始化导航项状态映射(使用字典缓存提升性能)
/// </summary>
void InitializeStateMap(ObservableCollection<NavigationItem> navigationItems);
/// <summary>
/// 根据 ViewModel 快速查找导航项(使用字典缓存)
/// </summary>
NavigationItem? FindNavigationItemByViewModel(ReactiveUI.IRoutableViewModel viewModel);
/// <summary>
/// 重置所有导航项的状态
/// </summary>
void ResetAllStates();
/// <summary>
/// 只重置选中状态,保持展开状态
/// </summary>
void ResetSelectionOnly();
/// <summary>
/// 重置除指定项外的所有导航项状态
/// </summary>
void ResetOtherStates(NavigationItem? exceptItem);
/// <summary>
/// 选中指定导航项
/// </summary>
void SelectItem(NavigationItem item);
/// <summary>
/// 切换导航项的展开状态
/// </summary>
void ToggleExpand(NavigationItem item);
/// <summary>
/// 查找父导航项
/// </summary>
NavigationItem? FindParentItem(NavigationItem childItem);
}