Files
Shi.Ji e31d3560bb 添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
2026-05-18 11:43:09 +08:00

184 lines
5.8 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using MainShell.AlgorithmCalib.Service;
using MainShell.Hardware;
using MaxwellFramework.Core.Interfaces;
using MwFramework.Controls.Components;
using MwFramework.ManagerService;
using Stylet;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace MainShell.AlgorithmCalib.ViewModel
{
public class FusionCalibViewModel:Screen,IPage
{
private HardwareManager _hardware;
private FusionCalibMotionService _fusionCalibMotionService;
public ICommand PrevCommand { get; set; }
public ICommand NextCommand { get; set; }
private IParameterManager _parameterManager;
public string Name { get; set; } = "FusionCalib";
private bool _isInit = false;
private ObservableCollection<Screen> _Screens;
/// <summary>
/// 需要显示的界面
/// </summary>
public ObservableCollection<Screen> Screens
{
get { return _Screens; }
set
{ SetAndNotify(ref _Screens, value); }
}
private Screen _ShowScreenVM;
/// <summary>
/// 当前显示界面的VM
/// </summary>
public Screen ShowScreenVM
{
get { return _ShowScreenVM; }
set
{ SetAndNotify(ref _ShowScreenVM, value); }
}
private string _currentCalibName;
/// <summary>
/// 当前标定名称供UI标定
/// </summary>
public string CurrentCalibName
{
get { return _currentCalibName; }
set { SetAndNotify(ref _currentCalibName, value); }
}
private string _progressText;
/// <summary>
/// 进度提示
/// </summary>
public string ProgressText
{
get { return _progressText; }
set { SetAndNotify(ref _progressText, value); }
}
private int _showIndex;
/// <summary>
/// 当前显示界面的下标
/// </summary>
public int ShowIndex
{
get { return _showIndex; }
set
{ SetAndNotify(ref _showIndex, value); }
}
private bool _isEnablePrev;
/// <summary>
/// 上一个按钮是否启用
/// </summary>
public bool IsEnablePrev
{
get { return _isEnablePrev; }
set
{ SetAndNotify(ref _isEnablePrev, value); }
}
private bool _isEnableNext = true;
/// <summary>
/// 下一个按钮是否启用
/// </summary>
public bool IsEnableNext
{
get { return _isEnableNext; }
set
{ SetAndNotify(ref _isEnableNext, value); }
}
public FusionCalibViewModel(IParameterManager paraManager)
{
_hardware = IoC.Get<HardwareManager>();
_fusionCalibMotionService=IoC.Get<FusionCalibMotionService>();
this._parameterManager = paraManager;
PrevCommand = new DelegateCommand(() =>
{
OnPrev();
});
NextCommand = new DelegateCommand(() =>
{
OnNext();
});
}
protected override void OnViewLoaded()
{
base.OnViewLoaded();
if (!_isInit)
{
Screens = new ObservableCollection<Screen>();
var cameraConfigs = new List<(string Name, string FileSaveName, List<HardwareDevice> Device)>
{
("Die融合标定","topWsCameraFusion", _hardware.CameraAxisManager.TopCameraWsAxisDevices),
("Map相机融合标定","wideCameraFusion", _hardware.CameraAxisManager.WideCameraAxisDevices),
};
Screens.Add(FusionMenuCalibViewModel.Create("Pad融合标定", "topCameraFusion", _hardware.CameraAxisManager.TopCameraAxisDevices,_hardware,_fusionCalibMotionService));
foreach (var (name, fileSaveName, device) in cameraConfigs)
{
Screens.Add(CameraFusionCalibViewModel.Create(name, fileSaveName, device, _hardware, _fusionCalibMotionService));
}
// 默认显示第一个
ShowIndex = 0;
ShowScreenVM = Screens[0];
UpdateNavigationState();
_isInit = true;
}
}
public void viewUnLoad()
{
//_device.ChangeCameraMode(CameraTriggerMode.On);
//_pLCControlOperation.CyliderPress(true);
}
private void OnPrev()
{
if (ShowIndex <= 0) return;
ShowIndex--;
ShowScreenVM = Screens[ShowIndex];
UpdateNavigationState(); // ← 加上这行
}
private void OnNext()
{
if (ShowIndex >= Screens.Count - 1) return;
ShowIndex++;
ShowScreenVM = Screens[ShowIndex];
UpdateNavigationState(); // ← 加上这行
}
/// <summary>
/// 统一更新导航状态和当前相机信息
/// </summary>
private void UpdateNavigationState()
{
IsEnablePrev = ShowIndex > 0;
IsEnableNext = ShowIndex < Screens.Count - 1;
// 更新当前相机名称
if (ShowScreenVM is CameraFusionCalibViewModel camVm)
{
CurrentCalibName = camVm.CalibName;
}
if (ShowScreenVM is FusionMenuCalibViewModel Vm)
{
CurrentCalibName = Vm.CalibName;
}
// 更新进度
ProgressText = $"{ShowIndex + 1} / {Screens.Count}";
}
}
}