示例#1
0
        public void ViewModelValidator_Child_CustomValidationAttribute()
        {
            var testViewModel = new TestViewModel4() { Child = new TestViewModel4Child() { IsChecked = true } };
            var validator = CreateValidator();
            var results = validator.ValidateViewModel(testViewModel).OrderBy(n => n.PropertyPath).ToList();

            Assert.AreEqual(1, results.Count);
            Assert.AreEqual("Child().ConditionalRequired", results[0].PropertyPath);
        }
        public TestPage5()
        {
            BindingContext = new TestViewModel4();

            Content = new StackLayout
            {
                Children =
                {
                    new Label {
                        Text = "Hello ContentPage"
                    }
                }
            };
        }
示例#3
0
        public void ViewModelValidator_Child_CustomValidationAttribute()
        {
            var testViewModel = new TestViewModel4()
            {
                Child = new TestViewModel4Child()
                {
                    IsChecked = true
                }
            };
            var validator = CreateValidator();
            var results   = validator.ValidateViewModel(testViewModel).OrderBy(n => n.PropertyPath).ToList();

            Assert.AreEqual(1, results.Count);
            Assert.AreEqual("Child().ConditionalRequired", results[0].PropertyPath);
        }
        public void Test_WeakPropertyBinding_Index_Indexer()
        {
            var view      = new TestViewModel();
            var viewModel = new TestViewModel();

            // 1. OneWay binding.
            new WeakPropertyBinding(view, "TestViewModel2.TestViewModel3.TestViewModels[0]", viewModel, "TestViewModel2.TestViewModel3.TestViewModels[1]")
            .Initialize <WeakPropertyBinding>().OfType <WeakPropertyBinding>()
            .SetMode(BindMode.OneWay)
            .AttachTargetEvent("TestViewEvent");


            var viewModel2 = new TestViewModel2();

            viewModel.TestViewModel2 = viewModel2;

            var viewModel3 = new TestViewModel3();

            viewModel2.TestViewModel3 = viewModel3;

            var testViewModels = new ObservableCollection <TestViewModel4>();

            viewModel3.TestViewModels = testViewModels;

            var t4  = new TestViewModel4();
            var t41 = new TestViewModel4();

            testViewModels.Add(t4);
            t41.Name = Name1;

            viewModel2          = new TestViewModel2();
            view.TestViewModel2 = viewModel2;

            viewModel3 = new TestViewModel3();
            viewModel2.TestViewModel3 = viewModel3;

            testViewModels            = new ObservableCollection <TestViewModel4>();
            viewModel3.TestViewModels = testViewModels;

            t41 = new TestViewModel4();
            testViewModels.Add(new TestViewModel4());

            Assert.AreEqual(1, view.TestViewModel2.TestViewModel3.TestViewModels.Count);
            viewModel.TestViewModel2.TestViewModel3.TestViewModels.Add(t41);

            Assert.AreEqual(1, view.TestViewModel2.TestViewModel3.TestViewModels.Count);
            Assert.AreEqual(view.TestViewModel2.TestViewModel3.TestViewModels[0], t41);
        }
        public void Test_WeakPropertyBinding_Index_Observable()
        {
            var view      = new TestView();
            var viewModel = new TestViewModel();

            // 1. OneWay binding.
            new WeakPropertyBinding(view, "Text1", viewModel, "TestViewModel2.TestViewModel3.TestViewModels[1].Name")
            .Initialize <WeakPropertyBinding>().OfType <WeakPropertyBinding>()
            .SetMode(BindMode.TwoWay)
            .AttachTargetEvent("TestViewEvent");


            var viewModel2 = new TestViewModel2();

            viewModel.TestViewModel2 = viewModel2;

            var viewModel3 = new TestViewModel3();

            viewModel2.TestViewModel3 = viewModel3;

            var testViewModels = new ObservableCollection <TestViewModel4>();

            viewModel3.TestViewModels = testViewModels;

            var t4  = new TestViewModel4();
            var t41 = new TestViewModel4();

            testViewModels.Add(t4);
            testViewModels.Add(t41);
            t41.Name = Name1;

            Assert.AreEqual(Name1, view.Text1);

            view.Text1 = Name2;
            view.RaiseTestViewEvent();
            Assert.AreEqual(Name2, t41.Name);

            var t42 = new TestViewModel4();

            testViewModels[1] = t42;
            Assert.AreEqual(null, view.Text1);
        }
示例#6
0
        public void Test_BindSource_IndexPropertyInt2()
        {
            var viewModel  = new TestViewModel();
            var bindSource = new BindContext(viewModel, "TestViewModel2.TestViewModel3.TestViewModels[1].Name");

            var viewModel2 = new TestViewModel2();

            viewModel.TestViewModel2 = viewModel2;

            var viewModel3 = new TestViewModel3();

            viewModel2.TestViewModel3 = viewModel3;

            Assert.AreEqual(null, bindSource.Value);
            Assert.AreEqual(null, bindSource.Source);

            var testViewModels = new ObservableCollection <TestViewModel4>();

            viewModel3.TestViewModels = testViewModels;

            Assert.AreEqual(null, bindSource.Source);
            Assert.AreEqual(null, bindSource.Value);

            var t4  = new TestViewModel4();
            var t41 = new TestViewModel4();

            testViewModels.Add(t4);
            testViewModels.Add(t41);

            Assert.AreEqual(t41, bindSource.Source);
            Assert.AreEqual(null, bindSource.Value);

            t41.Name = Name;
            Assert.AreEqual(Name, bindSource.Value);

            testViewModels.RemoveAt(1);

            Assert.AreEqual(null, bindSource.Source);
            Assert.AreEqual(null, bindSource.Value);
        }
        public void Test_WeakPropertyBinding_Index_Expression_String()
        {
            var view      = new TestView();
            var viewModel = new TestViewModel();

            // 1. OneWay binding.
            BindingEngine.SetPropertyBinding(view, v => v.Text1, viewModel, vm => vm.TestViewModel2.TestViewModel3.TestViewModel4s["12"].Name)
            .Initialize <WeakPropertyBinding>().OfType <WeakPropertyBinding>()
            .SetMode(BindMode.TwoWay)
            .AttachTargetEvent("TestViewEvent");

            var viewModel2 = new TestViewModel2();

            viewModel.TestViewModel2 = viewModel2;

            var viewModel3 = new TestViewModel3();

            viewModel2.TestViewModel3 = viewModel3;

            var testViewModels = new ObservableDictionary <string, TestViewModel4>();

            viewModel3.TestViewModel4s = testViewModels;

            var t4 = new TestViewModel4();

            testViewModels.Add("12", t4);
            t4.Name = Name1;

            Assert.AreEqual(Name1, view.Text1);

            view.Text1 = Name2;
            view.RaiseTestViewEvent();
            Assert.AreEqual(Name2, t4.Name);

            var t42 = new TestViewModel4();

            testViewModels["12"] = t42;
            Assert.AreEqual(null, view.Text1);
        }