using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; using Model; using Model.Models; using TSMasterCAN; using UIShare.GlobalVariable; using UIShare.PubEvent; using UIShare.UIViewModel; namespace CANModule.ViewModels { public class DBCInfoViewModel :BindableBase, IDialogAware { private can_network _can_Network; public required can_network can_Network { get { return _can_Network; } set { SetProperty(ref _can_Network, value); } } private List<_Msg_> _MessageInfo; public required List<_Msg_> MessageInfo { get { return _MessageInfo; } set { SetProperty(ref _MessageInfo, value); } } private ObservableCollection _CanNetWorkNode = new(); public ObservableCollection CanNetWorkNode { get => _CanNetWorkNode; set => SetProperty(ref _CanNetWorkNode, value); } private ObservableCollection _MessgaeNode = new(); public ObservableCollection MessgaeNode { get => _MessgaeNode; set => SetProperty(ref _MessgaeNode, value); } public ICommand CloseCommand { get; set; } public DialogCloseListener RequestClose { get; set; } public DBCInfoViewModel() { CloseCommand = new DelegateCommand(Close); } private void Close() { RequestClose.Invoke(); } public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { if (parameters.ContainsKey("can_Network")) { can_Network = parameters.GetValue("can_Network"); } if (parameters.ContainsKey("MsgDatabase")) { MessageInfo = parameters.GetValue>("MsgDatabase"); } InitTreeNode(); } private void InitTreeNode() { foreach(var item in can_Network.can_nodes) { var tx = new ObservableCollection(); var rx = new ObservableCollection(); foreach (var can_Message in item.rx_can_Messages) { rx.Add(new InstructionNode { Name = can_Message.message_name }); } foreach (var can_Message in item.tx_can_Messages) { tx.Add(new InstructionNode { Name = can_Message.message_name }); } var children = new ObservableCollection(); children.Add(new InstructionNode { Name = "TX", Children = tx }); children.Add(new InstructionNode { Name = "RX", Children = rx }); CanNetWorkNode.Add(new InstructionNode { Name = item.node_name, Children = children }); } foreach(var item in MessageInfo) { var children = new ObservableCollection(); foreach(var Signalname in item.signal_Name) { children.Add(new InstructionNode { Name = Signalname }); } string hexValue = "[0x" + item.msg_id.ToString("X") + "]"; MessgaeNode.Add(new InstructionNode { Name = hexValue+item.msg_name, Children=children }); } } } }