添加DataService为数据服务类,负责数据的加载工作,通过消息来通知DataService更新数据

This commit is contained in:
2025-06-28 19:32:51 +08:00
parent a04bfc2010
commit dba56f07d2
17 changed files with 181 additions and 34 deletions

76
Services/DataServices.cs Normal file
View File

@@ -0,0 +1,76 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.Extensions.Logging;
using PMSWPF.Data.Repositories;
using PMSWPF.Enums;
using PMSWPF.Extensions;
using PMSWPF.Helper;
using PMSWPF.Message;
using PMSWPF.Models;
namespace PMSWPF.Services;
public partial class DataServices:ObservableRecipient,IRecipient<LoadMessage>
{
private readonly ILogger<DataServices> _logger;
[ObservableProperty]
private List<Device> _devices = new List<Device>();
[ObservableProperty]
private List<MenuBean> menuBeans = new List<MenuBean>();
private readonly DeviceRepository _deviceRepository;
private readonly MenuRepository _menuRepository;
public event Action<List<Device>> OnDeviceListChanged;
public event Action<List<MenuBean>> OnMenuListChanged;
partial void OnDevicesChanged(List<Device> devices)
{
OnDeviceListChanged?.Invoke(devices);
}
partial void OnMenuBeansChanged(List<MenuBean> menuBeans)
{
OnMenuListChanged?.Invoke(menuBeans);
}
public DataServices(ILogger<DataServices> logger )
{
_logger = logger;
IsActive = true;
_deviceRepository = new DeviceRepository();
_menuRepository = new MenuRepository();
}
public async void Receive(LoadMessage message)
{
if (!(message.Value is LoadTypes))
throw new ArgumentException($"接受到的加载类型错误:{message.Value}");
try
{
switch ((LoadTypes)message.Value )
{
case LoadTypes.Devices:
Devices= await _deviceRepository.GetAll();
break;
case LoadTypes.Menu:
MenuBeans= await _menuRepository.GetMenu();
break;
}
}
catch (Exception e)
{
NotificationHelper.ShowMessage($"加载数据出现了错误:{e.Message}");
_logger.LogError($"加载数据出现了错误:{e.Message}");
}
}
}

View File

@@ -29,6 +29,7 @@ public class NavgatorServices : ObservableRecipient, IRecipient<NavgatorMessage>
public void Receive(NavgatorMessage message)
{
CurrentViewModel = message.Value;
CurrentViewModel.NavgateParameters = message.Parameters;
}
public event Action OnViewModelChanged;