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.
53 lines
1.3 KiB
53 lines
1.3 KiB
|
1 month ago
|
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);
|
||
|
|
}
|
||
|
|
|