/// <summary>
        /// Displays the picker.
        /// </summary>
        public bool ShowDialog()
        {
            if (this.RootItem == null)
            {
                throw new InvalidOperationException(Resources.SolutionPicker_ErrorNoRootItem);
            }

            // Initialize the view
            var picker = new SolutionPickerView();
            picker.Owner = this.Owner;
            if (!string.IsNullOrEmpty(this.Title))
            {
                picker.Title = this.Title;
            }

            // Initialize the model
            var root = new FilteredItemContainer(this.RootItem, this.Filter);
            var model = new SolutionPickerViewModel(root, this.Filter);
            model.EmptyItemsMessage = this.EmptyItemsMessage;
            model.SetSelectedItem(this.SelectedItem);

            //Bind the model and view
            picker.DataContext = model;

            var result = false;
            tracer.ShieldUI(() =>
                {
                    // Display the view
                    result = picker.ShowDialog().GetValueOrDefault();
                    if (result)
                    {
                        if (model.GetSelectedItem() == null)
                        {
                            result = false;
                        }
                        else
                        {
                            this.SelectedItem = model.GetSelectedItem().Item;
                        }
                    }

                }, Resources.SolutionPicker_ErrorFailedDialog);

            return result;
        }
 public void InitializeContext()
 {
     this.filter = Mock.Of<IPickerFilter>(pf => pf.ApplyFilter(this.solution) == false);
     this.root = new FilteredItemContainer(this.solution, filter);
     this.viewModel = new SolutionPickerViewModel(this.root, filter);
 }