你现在是一个 WPF 专家请帮我编写一个配置文件修改的应用程序项目名为ConfigNX利用CommunityToolkitMvvm 810 和PrismDryIoc 8197 库有4个View MainViewProbeMachine和ShowMachMainView为主窗口对应4个ViewModel:MainViewModelProbeViewModelMachineViewModel和Show
MainView.xaml
MainViewModel.cs
using Microsoft.Toolkit.Mvvm.ComponentModel; using Microsoft.Toolkit.Mvvm.Input; using Prism.Commands; using Prism.Regions; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq;
namespace ConfigNX.ViewModels { public partial class MainViewModel : ObservableObject { private readonly IRegionManager _regionManager; private readonly MachData _machData;
public MainViewModel(IRegionManager regionManager, MachData machData)
{
_regionManager = regionManager;
_machData = machData;
}
public ObservableCollection<ProbeCfg> ProbeLib => new ObservableCollection<ProbeCfg>(_machData.ProbeLib);
public ObservableCollection<OmvMachine> MachLib => new ObservableCollection<OmvMachine>(_machData.MachLib);
public DelegateCommand AddCommand => new DelegateCommand(AddMachine);
public DelegateCommand<OmvMachine> ModifyCommand => new DelegateCommand<OmvMachine>(ModifyMachine);
public DelegateCommand<OmvMachine> DeleteCommand => new DelegateCommand<OmvMachine>(DeleteMachine);
private void AddMachine()
{
_regionManager.RequestNavigate("MainRegion", "ShowMach", new NavigationParameters
{
{"Title", "Add Machine" },
{"Action", "Add" },
{"MachData", _machData }
});
}
private void ModifyMachine(OmvMachine machine)
{
_regionManager.RequestNavigate("MainRegion", "ShowMach", new NavigationParameters
{
{"Title", "Modify Machine" },
{"Action", "Modify" },
{"MachData", _machData },
{"Machine", machine }
});
}
private void DeleteMachine(OmvMachine machine)
{
_machData.MachLib.Remove(machine);
}
}
}
MachineViewModel.cs
using ConfigNX.Models; using Microsoft.Toolkit.Mvvm.ComponentModel; using Prism.Commands; using Prism.Regions; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq;
namespace ConfigNX.ViewModels
{
public partial class MachineViewModel : ObservableRecipient, IRecipient<ValueChangedMessage
public MachineViewModel(IRegionManager regionManager, MachData machData)
{
_regionManager = regionManager;
_machData = machData;
}
public ObservableCollection<string> ProbeOpt => new ObservableCollection<string>(_machData.ProbeLib.Select(p => p.Name));
public ObservableCollection<string> HeadOpt => new ObservableCollection<string>(_machData.HeadLib.Select(h => h.Name));
public ObservableCollection<string> ChuckOpt => new ObservableCollection<string>(new List<string> { "A", "B", "C" });
public void OnReceived(ValueChangedMessage<string> message)
{
if (message.Key == "ProbeName")
{
var machine = _machData.MachLib.FirstOrDefault(m => m.ProbeName == message.OldValue);
if (machine != null)
{
machine.ProbeName = message.NewValue;
}
}
else if (message.Key == "HeadName")
{
var machine = _machData.MachLib.FirstOrDefault(m => m.HeadName == message.OldValue);
if (machine != null)
{
machine.HeadName = message.NewValue;
}
}
}
public void SaveMachine(OmvMachine machine)
{
if (_machData.MachLib.Contains(machine))
{
// modify machine
}
else
{
// add machine
}
_regionManager.RequestNavigate("MainRegion", "Machine");
}
}
}
ProbeViewModel.cs
using ConfigNX.Models; using Microsoft.Toolkit.Mvvm.ComponentModel;
namespace ConfigNX.ViewModels { public partial class ProbeViewModel : ObservableObject { private readonly MachData _machData;
public ProbeViewModel(MachData machData)
{
_machData = machData;
}
}
}
ShowMach.xaml
ShowMachViewModel.cs
using ConfigNX.Models; using Microsoft.Toolkit.Mvvm.ComponentModel; using Prism.Commands; using Prism.Regions; using Syste
原文地址: https://www.cveoy.top/t/topic/eB3N 著作权归作者所有。请勿转载和采集!