Пример #1
0
        protected override void SetStringValue(string value)
        {
            var xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(value);

            var globalMail = Constants.LoadMail(xmlDoc);

            this.Mail = new ObservableCollection <MailItemViewModel>(globalMail.Select(kvp => new MailItemViewModel(kvp.Key, kvp.Value)));

            this.SelectedMail = this.Mail.FirstOrDefault();
        }
Пример #2
0
        private void MailCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            for (var i = 0; i < this.Mail.Count; i++)
            {
                this.Mail[i].Index = i;
            }

            if (e.Action == NotifyCollectionChangedAction.Add)
            {
                foreach (var newObject in e.NewItems)
                {
                    var newMessage = newObject as MessageViewModel;
                    if (newMessage != null)
                    {
                        newMessage.PropertyChanged += this.MailIsDirtyChanged;
                    }
                }
            }

            if (e.Action == NotifyCollectionChangedAction.Remove)
            {
                foreach (var oldObject in e.OldItems)
                {
                    var oldMessage = oldObject as MessageViewModel;
                    if (oldMessage != null)
                    {
                        oldMessage.PropertyChanged -= this.MailIsDirtyChanged;
                    }
                }
            }

            if (!this.Mail.Contains(this.SelectedMail))
            {
                this.SelectedMail = this.lastSelectedIndex < this.Mail.Count && this.lastSelectedIndex >= 0
                    ? this.Mail[this.lastSelectedIndex] : this.Mail.LastOrDefault();
            }

            this.OnPropertyChanged(nameof(this.Mail));
            this.OnPropertyChanged(nameof(this.IsDirty));
        }