启动加载页
This commit is contained in:
@@ -234,11 +234,23 @@ namespace MainModule.ViewModels
|
||||
#region 命令处理与事件
|
||||
private async Task OnLoad()
|
||||
{
|
||||
if (!IsInitialized)
|
||||
// 设备初始化期间仅对当前台架显示灰度遮罩层,初始化完成后关闭(finally 保证异常时也能关闭)
|
||||
_eventAggregator.GetEvent<ScopeOverlayEvent>().Publish(new ScopeOverlayArgs { Scope = TestStatus, Show = true });
|
||||
// 让遮罩层先完成渲染,再进入同步阻塞的设备初始化(泵送 Dispatcher 至 Render 优先级)
|
||||
System.Windows.Application.Current?.Dispatcher.Invoke(() => { }, System.Windows.Threading.DispatcherPriority.Render);
|
||||
try
|
||||
{
|
||||
await _deviceManager.ConnectAllDevices();
|
||||
IsInitialized = true;
|
||||
if (!IsInitialized)
|
||||
{
|
||||
await _deviceManager.ConnectAllDevices();
|
||||
IsInitialized = true;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
_eventAggregator.GetEvent<ScopeOverlayEvent>().Publish(new ScopeOverlayArgs { Scope = TestStatus, Show = false });
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void OnRefresh()
|
||||
|
||||
@@ -128,6 +128,26 @@
|
||||
</vs:ParametersManager.Style>
|
||||
</vs:ParametersManager>
|
||||
|
||||
<Border x:Name="Overlay"
|
||||
Background="#40000000"
|
||||
Visibility="Collapsed"
|
||||
Panel.ZIndex="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.ColumnSpan="4">
|
||||
<StackPanel Width="150"
|
||||
VerticalAlignment="Center"
|
||||
Margin="0 0 0 100">
|
||||
<ProgressBar Width="80"
|
||||
Height="80"
|
||||
Margin="20"
|
||||
IsIndeterminate="True"
|
||||
Style="{StaticResource MaterialDesignCircularProgressBar}" />
|
||||
<TextBlock FontSize="30"
|
||||
Text="加载中......"
|
||||
HorizontalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
</Border>
|
||||
</UserControl>
|
||||
@@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using Prism.Events;
|
||||
using MainModule.ViewModels;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@@ -12,6 +14,7 @@ using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using UIShare.PubEvent;
|
||||
|
||||
namespace MainModule.Views
|
||||
{
|
||||
@@ -20,9 +23,23 @@ namespace MainModule.Views
|
||||
/// </summary>
|
||||
public partial class AutomatedTestingView : UserControl
|
||||
{
|
||||
public AutomatedTestingView()
|
||||
public AutomatedTestingView(IEventAggregator eventAggregator)
|
||||
{
|
||||
InitializeComponent();
|
||||
eventAggregator.GetEvent<OverlayEvent>().Subscribe(ShowOverlay);
|
||||
// 台架级加载遮罩:仅台架名称匹配时响应,避免其他台架/主窗口同时变灰
|
||||
eventAggregator.GetEvent<ScopeOverlayEvent>().Subscribe(ShowScopeOverlay);
|
||||
}
|
||||
private void ShowOverlay(bool arg)
|
||||
{
|
||||
Overlay.Visibility = arg ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private void ShowScopeOverlay(ScopeOverlayArgs args)
|
||||
{
|
||||
// 只处理属于当前台架的遮罩事件(TestStatus 在 OnNavigatedTo 时赋值)
|
||||
if (DataContext is not AutomatedTestingViewModel vm || vm.TestStatus != args.Scope) return;
|
||||
Overlay.Visibility = args.Show ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user