public void CreateAndInitializeViewTest1()
        {
            TestView        viewModel        = new TestView();
            TestView        parentViewModel  = new TestView();
            TestView        currentViewModel = null;
            TestViewLocator locator          = new TestViewLocator();

            ViewLocator.Default = locator;

            ViewHelper.CreateAndInitializeView(ViewLocator.Default, "foo", viewModel, null, null);
            currentViewModel = (TestView)locator.ResolvedView.DataContext;
            Assert.AreEqual(currentViewModel, viewModel);

            ViewHelper.CreateAndInitializeView(ViewLocator.Default, "foo", viewModel, "1", parentViewModel);
            currentViewModel = (TestView)locator.ResolvedView.DataContext;
            Assert.AreEqual(currentViewModel, viewModel);
            Assert.AreEqual(((ISupportParameter)currentViewModel).Parameter, "1");
            Assert.AreEqual(((ISupportParentViewModel)currentViewModel).ParentViewModel, parentViewModel);

            ViewHelper.CreateAndInitializeView(ViewLocator.Default, "foo", null, "1", parentViewModel);
            currentViewModel = (TestView)locator.ResolvedView.DataContext;
            Assert.AreNotEqual(currentViewModel, viewModel);
            Assert.AreEqual(((ISupportParameter)currentViewModel).Parameter, "1");
            Assert.AreEqual(((ISupportParentViewModel)currentViewModel).ParentViewModel, parentViewModel);
            ViewLocator.Default = null;
        }
        public void CreateViewThrowExceptionOnNullArgumentsTest()
        {
            Action <InvalidOperationException> checkExceptionAction = x => {
                Assert.IsTrue(x.Message.Contains(ViewHelper.Error_CreateViewMissArguments));
                Assert.IsTrue(x.Message.Contains(ViewHelper.HelpLink_CreateViewMissArguments));
            };

            AssertHelper.AssertThrows <InvalidOperationException>(() => ViewHelper.CreateView(ViewLocator.Default, null), checkExceptionAction);
            AssertHelper.AssertThrows <InvalidOperationException>(() => ViewHelper.CreateAndInitializeView(viewLocator: ViewLocator.Default, documentType: null, viewModel: null, parameter: null, parentViewModel: null, viewTemplate: null, viewTemplateSelector: null), checkExceptionAction);
            AssertHelper.AssertThrows <InvalidOperationException>(() => ViewHelper.CreateAndInitializeView(viewLocator: ViewLocator.Default, documentType: null, viewModel: null, parameter: null, parentViewModel: null, documentOwner: null, viewTemplate: null, viewTemplateSelector: null), checkExceptionAction);
        }
Esempio n. 3
0
            IDocument IDocumentManagerService.CreateDocument(string documentType, object viewModel, object parameter, object parentViewModel)
            {
                TestDocument doc = new TestDocument(documentType, viewModel, parameter, parentViewModel);

                ViewHelper.CreateAndInitializeView(doc, string.Empty, viewModel, parameter, parentViewModel);
                var vm = new TestSupportServices();

                vm.ParentViewModel = parentViewModel;
                DocumentUIServiceBase.SetTitleBinding(doc, TestDocument.TitleProperty, doc);
                vm.Parameter = parameter;
                doc.Content  = vm;
                docs.Add(doc);
                return(doc);
            }
        public void ResolveViewTest()
        {
            var parentViewModel = new ViewModel();
            DependencyObject fallbackView;
            TextBlock        fallbackElement;

#if !SILVERLIGHT
            fallbackView    = (DependencyObject)ViewHelper.CreateAndInitializeView(null, "TestView", null, "param", parentViewModel);
            fallbackElement = LayoutTreeHelper.GetVisualChildren(fallbackView).OfType <TextBlock>().First();
            Assert.AreEqual("\"TestView\" type not found.", fallbackElement.Text);
            ViewLocator.Default = new ViewLocator(new[] { this.GetType().Assembly });
#endif
            try {
                var testView = ViewHelper.CreateAndInitializeView(null, "TestView", null, "param", parentViewModel);
                Assert.IsInstanceOf(typeof(TestView), testView);
                fallbackView    = (DependencyObject)ViewHelper.CreateAndInitializeView(null, "foo", null, "param", parentViewModel);
                fallbackElement = LayoutTreeHelper.GetVisualChildren(fallbackView).OfType <TextBlock>().First();
                Assert.AreEqual("\"foo\" type not found.", fallbackElement.Text);

                TestViewElement testViewElement = (TestViewElement)ViewHelper.CreateAndInitializeView(null, "TestViewElement", null, "param", parentViewModel);
                ViewModelBase   viewModel       = ViewHelper.GetViewModelFromView(testViewElement).With(x => x as ViewModelBase);
                Assert.AreEqual("param", viewModel.With(x => x as ISupportParameter).Parameter);
                Assert.AreEqual(parentViewModel, viewModel.With(x => x as ISupportParentViewModel).ParentViewModel);

                testViewElement = (TestViewElement)ViewHelper.CreateAndInitializeView(new TestViewLocator(), "foo", null, "param", parentViewModel);
                viewModel       = ViewHelper.GetViewModelFromView(testViewElement).With(x => x as ViewModelBase);
                Assert.AreEqual("param", viewModel.With(x => x as ISupportParameter).Parameter);
                Assert.AreEqual(parentViewModel, viewModel.With(x => x as ISupportParentViewModel).ParentViewModel);

                ViewLocator.Default = new TestViewLocator();
                testViewElement     = (TestViewElement)ViewHelper.CreateAndInitializeView(null, "foo", null, "param", parentViewModel);
                viewModel           = ViewHelper.GetViewModelFromView(testViewElement).With(x => x as ViewModelBase);
                Assert.AreEqual("param", viewModel.With(x => x as ISupportParameter).Parameter);
                Assert.AreEqual(parentViewModel, viewModel.With(x => x as ISupportParentViewModel).ParentViewModel);

                testViewElement = (TestViewElement)ViewHelper.CreateAndInitializeView(null, "foo", "param", "param", parentViewModel);
                Assert.AreEqual("param", testViewElement.DataContext);
            } finally {
                ViewLocator.Default = null;
            }
        }