private void AddItem()
        {
            ELLSequenceItemXML newItem = new ELLSequenceItemXML();

            _sequence.Items.Add(newItem);
            BuildList(newItem);
        }
        /// <summary> Constructor. </summary>
        /// <param name="owner">	   The owner. </param>
        /// <param name="item">		   The item. </param>
        /// <param name="index">	   The index. </param>
        public ELLSequenceItemViewModel(ISequenceRoot owner, ELLSequenceItemXML item, int index)
        {
            _owner             = owner;
            _sequenceItem      = item;
            Index              = index;
            _addressCollection = new CheckableAddressCollection(_owner.DeviceTypes.Keys.OrderBy(ch => ch));

            List <char> currentAddresses = new List <char>();

            foreach (char address in item.Addresses)
            {
                if (_owner.DeviceTypes.ContainsKey(address))
                {
                    currentAddresses.Add(address);
                    _addressCollection.Items.First(i => i.Value == address).IsChecked = true;
                }
            }
            if (currentAddresses.Count == 0)
            {
                currentAddresses.Add(_owner.DeviceTypes.Keys.First());
                _addressCollection.Items.First(i => i.Value == _owner.DeviceTypes.Keys.First()).IsChecked = true;
            }
            _sequenceItem.Addresses = currentAddresses;
            UpdateOptions();

            _addressCollection.ItemUpdate += AddressCollection_ItemUpdate;
            _owner = owner;
        }
        private void InsertItem()
        {
            int index = -1;

            if (SelectedItem != null)
            {
                index = _sequence.Items.IndexOf(SelectedItem.Item);
            }
            if (index >= 0 && index < _sequence.Items.Count)
            {
                ELLSequenceItemXML newItem = new ELLSequenceItemXML();
                _sequence.Items.Insert(index, newItem);
                BuildList(newItem);
            }
            else
            {
                AddItem();
            }
        }
        private void BuildList(ELLSequenceItemXML selected)
        {
            if (!_sequence.Items.Any())
            {
                Items        = new ObservableCollection <ELLSequenceItemViewModel>();
                SelectedItem = null;
                RaisePropertyChanged(() => ShowParam);
                return;
            }
            int index = 1;

            if (selected == null)
            {
                selected = SelectedItem?.Item;
            }
            Items        = new ObservableCollection <ELLSequenceItemViewModel>(_sequence.Items.Select(item => new ELLSequenceItemViewModel(this, item, index++)));
            SelectedItem = (selected == null) ? Items.FirstOrDefault() : Items.FirstOrDefault(item => item.Item == selected);
            RaisePropertyChanged(() => ShowParam);
        }
 /// <summary> Default constructor. </summary>
 public ELLSequenceItemViewModel()
 {
     _sequenceItem                  = new ELLSequenceItemXML();
     _addressCollection             = new CheckableAddressCollection(new List <char>());
     _addressCollection.ItemUpdate += AddressCollection_ItemUpdate;
 }