MVVM 模式激光直写控制软件完整实现

下面我将使用 MVVM 模式重构之前的激光直写控制软件,提供完整的工程结构。我们将使用 Prism 框架来实现 MVVM 模式。

一、项目结构

LaserDirectWriteApp/
├── Models/                  # 数据模型
│   ├── LaserParameters.cs
│   ├── MotionParameters.cs
│   └── SystemStatus.cs
├── ViewModels/              # 视图模型
│   ├── MainViewModel.cs
│   ├── LaserControlViewModel.cs
│   ├── MotionControlViewModel.cs
│   └── PreviewViewModel.cs
├── Views/                   # 视图
│   ├── MainWindow.xaml
│   ├── LaserControlView.xaml
│   ├── MotionControlView.xaml
│   └── PreviewView.xaml
├── Services/                # 服务层
│   ├── ILaserService.cs
│   ├── IMotionService.cs
│   ├── LaserService.cs
│   └── MotionService.cs
├── Converters/              # 值转换器
│   └── BooleanToStatusConverter.cs
├── Commands/                # 自定义命令
│   └── AsyncRelayCommand.cs
└── App.xaml                 # 应用入口

二、核心代码实现
1. 应用入口 (App.xaml)

<prism:PrismApplication x:Class="LaserDirectWriteApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:prism="http://prismlibrary.com/">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/Prism.Wpf;component/Resources/PrismResources.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</prism:PrismApplication>
using Prism.Ioc;
using Prism.Unity;
using LaserDirectWriteApp.Views;
using LaserDirectWriteApp.ViewModels;
using LaserDirectWriteApp.Services;

public partial class App : PrismApplication
{
    protected override Window CreateShell()
    {
        return Container.Resolve<MainWindow>();
    }

    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        // 注册服务
        containerRegistry.RegisterSingleton<ILaserService, LaserService>();
        containerRegistry.RegisterSingleton<IMotionService, MotionService>();
        
        // 注册视图和ViewModel
        containerRegistry.RegisterForNavigation<MainWindow, MainViewModel>();
        containerRegistry.RegisterForNavigation<LaserControlView, LaserControlViewModel>();
        containerRegistry.RegisterForNavigation<MotionControlView, MotionControlViewModel>();
        containerRegistry.RegisterForNavigation<PreviewView, PreviewViewModel>();
    }
}

2. 主窗口视图模型 (MainViewModel.cs)

using Prism.Mvvm;
using Prism.Commands;
using LaserDirectWriteApp.Services;

public class MainViewModel : BindableBase
{
    private readonly ILaserService _laserService;
    private readonly IMotionService _motionService;
    
    private string _statusMessage = "系统就绪";
    public string StatusMessage
    {
        get => _statusMessage;
        set => SetProperty(ref _statusMessage, value);
    }
    
    private bool _isConnected;
    public bool IsConnected
    {
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值