胶料快检添加离线模式
This commit is contained in:
@@ -195,6 +195,7 @@ namespace YY.Admin.ViewModels
|
||||
|
||||
private SubscriptionToken? _openOrActivateTabToken;
|
||||
private SubscriptionToken? _tabClosedToken;
|
||||
private SubscriptionToken? _tabCloseRequestToken;
|
||||
private SubscriptionToken? _refreshTabToken;
|
||||
private SubscriptionToken? _loginOutToken;
|
||||
|
||||
@@ -235,6 +236,7 @@ namespace YY.Admin.ViewModels
|
||||
// 订阅事件
|
||||
_openOrActivateTabToken = _eventAggregator.GetEvent<TabSourceSelectedEvent>().Subscribe(OnOpenOrActivateTab);
|
||||
_tabClosedToken = _eventAggregator.GetEvent<TabClosedEvent>().Subscribe(OnTabClosed);
|
||||
_tabCloseRequestToken = _eventAggregator.GetEvent<TabCloseRequestEvent>().Subscribe(OnTabCloseRequest, ThreadOption.UIThread);
|
||||
_refreshTabToken = _eventAggregator.GetEvent<TabRefreshEvent>().Subscribe(OnRefreshTab);
|
||||
_loginOutToken = _eventAggregator.GetEvent<SysUserEvents.LoginOutEvent>().Subscribe(Destroy);
|
||||
|
||||
@@ -489,6 +491,48 @@ namespace YY.Admin.ViewModels
|
||||
_ = NavigateToViewAsync(CommonConst.ContentRegion, tabItemModel.ViewName, tabItemModel.TabSource.NavigationParameter);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按 ViewName 关闭 Tab,并可选激活指定页面
|
||||
/// </summary>
|
||||
private void OnTabCloseRequest(TabCloseRequestPayload payload)
|
||||
{
|
||||
if (payload == null || string.IsNullOrWhiteSpace(payload.ViewNameToClose))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var tabsToClose = OpenTabs
|
||||
.Where(t => t.IsClosable
|
||||
&& string.Equals(t.ViewName, payload.ViewNameToClose, StringComparison.OrdinalIgnoreCase))
|
||||
.ToList();
|
||||
|
||||
foreach (var tab in tabsToClose)
|
||||
{
|
||||
_eventAggregator.GetEvent<TabClosedEvent>().Publish(tab);
|
||||
OpenTabs.Remove(tab);
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(payload.ActivateViewName))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var existingTab = OpenTabs.FirstOrDefault(t =>
|
||||
string.Equals(t.ViewName, payload.ActivateViewName, StringComparison.OrdinalIgnoreCase));
|
||||
if (existingTab != null)
|
||||
{
|
||||
SelectedTab = existingTab;
|
||||
return;
|
||||
}
|
||||
|
||||
OnOpenOrActivateTab(new TabSource
|
||||
{
|
||||
Name = payload.ActivateTabName ?? payload.ActivateViewName,
|
||||
Icon = "\ue7de",
|
||||
ViewName = payload.ActivateViewName
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// TabItem关闭回调
|
||||
/// </summary>
|
||||
@@ -764,6 +808,15 @@ namespace YY.Admin.ViewModels
|
||||
_tabClosedToken = null;
|
||||
}
|
||||
|
||||
if (_tabCloseRequestToken != null)
|
||||
{
|
||||
_eventAggregator
|
||||
.GetEvent<TabCloseRequestEvent>()
|
||||
.Unsubscribe(_tabCloseRequestToken);
|
||||
|
||||
_tabCloseRequestToken = null;
|
||||
}
|
||||
|
||||
if (_refreshTabToken != null)
|
||||
{
|
||||
_eventAggregator
|
||||
|
||||
Reference in New Issue
Block a user