public void LoadData(object dataInstance) { var helper = ((OverviewDataHelper)dataInstance); using (mailbox.Messages.ReaderLock) SelectedMessage = mailbox.Messages.FirstOrDefault( c => c.MessageId == helper.MessageId); if (SelectedMessage == null) { throw new ApplicationException( String.Format("Message was not found. MessageId = {0}", ((OverviewDataHelper)dataInstance).MessageId)); } // Mark all messages as read SelectedMessage.MarkRead(); OnPropertyChanged("SelectedMessage"); OnPropertyChanged("Title"); if (SelectedConversation == null || SelectedMessage.Conversation != SelectedConversation) { SelectedConversation = SelectedMessage.Conversation; OnPropertyChanged("SelectedConversation"); Messages.Replace(SelectedConversation.Messages); if (list != null) { list.SelectedItem = SelectedMessage; Dispatcher.BeginInvoke(DispatcherPriority.Input, (Action)(() => list.ScrollIntoView(SelectedMessage))); } } MessageActionsBox.Show(SelectedMessage); ThreadView.Show(SelectedMessage); UserProfileControl.SourceAddress = SelectedMessage.From; FocusHelper.Focus(TabSink); }