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
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);
|
|
}
|
|
|
|
|