MainView.xaml

<Window.Resources> <ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries> </Window.Resources> <controls:DataGrid ItemsSource="{Binding ProbeLib}" AutoGenerateColumns="False"> <DataGrid.Columns> </DataGrid.Columns> </controls:DataGrid> <controls:DataGrid ItemsSource="{Binding MachLib}" AutoGenerateColumns="False" SelectionMode="Single" SelectionUnit="FullRow" prism:ViewModelLocator.AutoWireViewModel="True" ContextMenuOpening="DataGrid_ContextMenuOpening"> <DataGrid.ContextMenu> </DataGrid.ContextMenu> <DataGrid.Columns> <DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate> </DataGrid.Columns> </controls:DataGrid>

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> { private readonly IRegionManager _regionManager; private readonly MachData _machData;

    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

<UserControl.Resources> <ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries> </UserControl.Resources> <Grid.ColumnDefinitions> </Grid.ColumnDefinitions> <Grid.RowDefinitions> </Grid.RowDefinitions> <Grid.ColumnDefinitions> </Grid.ColumnDefinitions> <Grid.RowDefinitions> </Grid.RowDefinitions>


原文地址: https://www.cveoy.top/t/topic/eB3N 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录