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.3 KiB

using AuroraDesk.Core.Entities;
using System.Collections.ObjectModel;
namespace AuroraDesk.Core.Interfaces;
/// <summary>
/// 标签页管理服务接口
/// 负责管理标签页的创建、选择、关闭等操作,分离标签页管理职责
/// </summary>
public interface ITabManagementService
{
/// <summary>
/// 标签页集合
/// </summary>
ObservableCollection<TabItem> Tabs { get; }
/// <summary>
/// 当前选中的标签页
/// </summary>
TabItem? SelectedTab { get; set; }
/// <summary>
/// 当前选中标签页变化事件
/// </summary>
System.IObservable<TabItem?> SelectedTabChanged { get; }
/// <summary>
/// 创建或更新标签页
/// </summary>
void CreateOrUpdateTab(NavigationItem navigationItem, ReactiveUI.IRoutableViewModel viewModel);
/// <summary>
/// 选择标签页
/// </summary>
void SelectTab(TabItem tab);
/// <summary>
/// 关闭标签页
/// </summary>
void CloseTab(TabItem tab);
/// <summary>
/// 根据 ViewModel 查找标签页
/// </summary>
TabItem? FindTabByViewModel(ReactiveUI.IRoutableViewModel viewModel);
/// <summary>
/// 根据 ID 查找标签页
/// </summary>
TabItem? FindTabById(string tabId);
}