实现导航跳转

This commit is contained in:
2025-07-30 12:09:00 +08:00
parent 3b5ecef895
commit 1ebc1a4df6
21 changed files with 150 additions and 248 deletions

View File

@@ -28,6 +28,7 @@ public partial class DevicesViewModel : ViewModelBase, INavigatable
private readonly IDeviceAppService _deviceAppService;
private readonly IMapper _mapper;
private readonly IDialogService _dialogService;
private readonly INavigationService _navigationService;
/// <summary>
@@ -50,10 +51,12 @@ public partial class DevicesViewModel : ViewModelBase, INavigatable
/// <param name="dialogService">对话框服务。</param>
/// <param name="dataServices">数据服务。</param>
public DevicesViewModel(IMapper mapper,
IDialogService dialogService, DataServices dataServices, IDeviceAppService deviceAppService)
IDialogService dialogService, INavigationService navigationService,
DataServices dataServices, IDeviceAppService deviceAppService)
{
_mapper = mapper;
_dialogService = dialogService;
_navigationService = navigationService;
DataServices = dataServices;
_deviceAppService = deviceAppService;
Devices = new ObservableCollection<DeviceItemViewModel>();
@@ -125,9 +128,9 @@ public partial class DevicesViewModel : ViewModelBase, INavigatable
// 更新界面
DataServices.Devices.Add(_mapper.Map<DeviceItemViewModel>(addDto.Device));
DataServices.AddMenuItem(_mapper.Map<MenuBeanItemViewModel>(addDto.DeviceMenu));
DataServices.AddMenuItem(_mapper.Map<MenuItemViewModel>(addDto.DeviceMenu));
DataServices.AddVariableTable(_mapper.Map<VariableTableItemViewModel>(addDto.VariableTable));
DataServices.AddMenuItem(_mapper.Map<MenuBeanItemViewModel>(addDto.VariableTableMenu));
DataServices.AddMenuItem(_mapper.Map<MenuItemViewModel>(addDto.VariableTableMenu));
NotificationHelper.ShowSuccess($"设备添加成功:{addDto.Device.Name}");
}
@@ -208,9 +211,9 @@ public partial class DevicesViewModel : ViewModelBase, INavigatable
var menu = DataServices.Menus.FirstOrDefault(m =>
m.MenuType == MenuType.DeviceMenu &&
m.TargetId == device.Id);
if (menu!=null)
if (menu != null)
{
menu.Header=device.Name;
menu.Header = device.Name;
}
}
}
@@ -224,12 +227,14 @@ public partial class DevicesViewModel : ViewModelBase, INavigatable
public void NavigateToDetail()
{
if (SelectedDevice == null) return;
var deviceDetailVm = App.Current.Services.GetRequiredService<DeviceDetailViewModel>();
deviceDetailVm.CurrentDevice = SelectedDevice;
MessageHelper.SendNavgatorMessage(deviceDetailVm);
var menu=DataServices.Menus.FirstOrDefault(m => m.MenuType == MenuType.DeviceMenu && m.TargetId == SelectedDevice.Id);
if (menu==null) return;
_navigationService.NavigateToAsync(menu);
}
public async Task OnNavigatedToAsync(object parameter)
public async Task OnNavigatedToAsync(MenuItemViewModel menu)
{
}
}