public void ClosingDocumentOnWindowClosingShouldntThrow()
        {
            Window.Show();
            DispatcherHelper.DoEvents();
            BindingTestClass          testClass = new BindingTestClass();
            WindowedDocumentUIService service   = CreateService();

            Interaction.GetBehaviors(Window).Add(service);
            IDocumentManagerService iService = service;

            IDocument document = null;

            WindowedDocumentUIService.WindowDocument typedDocument = null;
            var content = new TestDocumentContent();

            document      = iService.CreateDocument("View1", content);
            typedDocument = (WindowedDocumentUIService.WindowDocument)document;
            document.Show();
            DispatcherHelper.DoEvents();

            Window window = typedDocument.Window.RealWindow;

            content.onClose = () => document.Close();
            window.Close();
            DispatcherHelper.DoEvents();
        }
        public void TwoWayBindingReadonlyProperty()
        {
            BindingTestClass          testClass = new BindingTestClass();
            WindowedDocumentUIService service   = CreateService();

            Interaction.GetBehaviors(Window).Add(service);
            IDocumentManagerService iService = service;

            BindingOperations.SetBinding(service, WindowedDocumentUIService.ActiveDocumentProperty,
                                         new Binding()
            {
                Path = new PropertyPath(BindingTestClass.ReadonlyActiveDocumentProperty), Source = testClass, Mode = BindingMode.Default
            });
        }
        public void TwoWayBinding()
        {
            EnqueueShowWindow();
            BindingTestClass          testClass = new BindingTestClass();
            WindowedDocumentUIService service   = CreateService();

            Interaction.GetBehaviors(Window).Add(service);
            IDocumentManagerService iService = service;

            IDocument document1 = null;
            IDocument document2 = null;

            BindingOperations.SetBinding(service, WindowedDocumentUIService.ActiveDocumentProperty,
                                         new Binding()
            {
                Path = new PropertyPath(BindingTestClass.ActiveDocumentProperty), Source = testClass, Mode = BindingMode.Default
            });

            EnqueueCallback(delegate {
                document1 = iService.CreateDocument("View1", ViewModelSource.Create(() => new UITestViewModel()
                {
                    Title = "Title1", Parameter = 1
                }));
                document1.Show();
                DispatcherHelper.DoEvents();
                document2 = iService.CreateDocument("View2", ViewModelSource.Create(() => new UITestViewModel()
                {
                    Title = "Title2", Parameter = 2
                }));
                document2.Show();
                DispatcherHelper.DoEvents();
            });
            EnqueueWindowUpdateLayout();
            EnqueueCallback(delegate {
                Assert.AreSame(document2, service.ActiveDocument);
                Assert.AreSame(document2, testClass.ActiveDocument);
                testClass.ActiveDocument = document1;
                DispatcherHelper.DoEvents();
                Assert.AreSame(document1, service.ActiveDocument);
            });
            EnqueueWindowUpdateLayout();
            EnqueueTestComplete();
        }