private void OnSelectionStatusChanged(object sender, EventArgs e)
        {
            if (this.Session == null)
            {
                return;
            }
            this.FirePropertyChanged("SelectionStatus");
            ICompletion selectedCompletion = this.Session.SelectionStatus.SelectedCompletion;

            if (this.oldSelection != null)
            {
                this.oldSelection.OnIsSelectedChanged();
                this.oldSelection = (SelectableCompletion)null;
            }
            foreach (SelectableCompletion selectableCompletion in this.selectableCompletions)
            {
                if (selectableCompletion.Completion == selectedCompletion)
                {
                    selectableCompletion.OnIsSelectedChanged();
                    this.oldSelection = selectableCompletion;
                    break;
                }
            }
            this.ScrollIntoView(selectedCompletion);
        }
        private void OnCompletionsListMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (this.Session == null)
            {
                return;
            }
            SelectableCompletion selectableCompletion = ((FrameworkElement)e.OriginalSource).DataContext as SelectableCompletion;

            if (selectableCompletion == null)
            {
                return;
            }
            this.Session.SetSelectionStatus(selectableCompletion.Completion, CompletionSelectionOptions.Selected | CompletionSelectionOptions.Unique);
            if (e.ClickCount > 1)
            {
                this.Session.Commit();
            }
            e.Handled = true;
        }