Exemplo n.º 1
0
        public void Test_BindSource_IndexPropertyInt()
        {
            var viewModel = new TestViewModel();
            var bindSource = new BindContext(viewModel, "TestViewModel2.TestViewModel3.IntValues[1]");

            var viewModel2 = new TestViewModel2();
            viewModel.TestViewModel2 = viewModel2;

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

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

            var list = new ObservableCollection<int>();
            viewModel3.IntValues = list;
            Assert.AreEqual(list, bindSource.Source);
            Assert.AreEqual(typeof(int), bindSource.PropertyType);
            Assert.AreEqual(default(int), bindSource.Value);

            list.Add(1);
            list.Add(2);

            Assert.AreEqual(2, bindSource.Value);

            bindSource.Value = 2;
            Assert.AreEqual(2, list[1]);

            list.RemoveAt(1);

            Assert.AreEqual(default(int), bindSource.Value);
        }
Exemplo n.º 2
0
        public void Test_BindSource_IndexPropertyDictionary()
        {
            var viewModel = new TestViewModel();
            var bindSource = new BindContext(viewModel, "TestViewModel2.StringValues[yohan]");

            Assert.IsNull(bindSource.Source);
            Assert.IsNull(bindSource.Value);

            var viewModel2 = new TestViewModel2();
            viewModel.TestViewModel2 = viewModel2;

            Assert.IsNull(bindSource.Source);
            Assert.IsNull(bindSource.Value);

            var dictionary = new Dictionary<string, string>();
            viewModel.TestViewModel2.StringValues = dictionary;

            Assert.AreEqual(dictionary, bindSource.Source);
            Assert.IsNull(bindSource.Value);

            viewModel.TestViewModel2.StringValues = new Dictionary<string, string>();

            viewModel.TestViewModel2.StringValues.Add("yohan", "1");
            Assert.AreEqual("1", bindSource.Value);
        }
Exemplo n.º 3
0
        public void Test_WeakSource_SetBinding()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();
            var ws = new WeakTarget(view);

            ws.SetBinding<WeakPropertyBinding>("Text1", viewModel, "Name");

            viewModel.Name = Name1;

            Assert.AreEqual(view.Text1, Name1);

            NotSupportedException exception = null;

            try
            {
                ws.SetBinding<WeakNotifyBinding>("Text1", viewModel, "Name");
            }
            catch(NotSupportedException e)
            {
                exception = e;
            }

            Assert.IsNotNull(exception);
        }
Exemplo n.º 4
0
        public void Test_MemoryLeak_BindSource()
        {
            var v = new TestViewModel();
            var v2 = new TestViewModel2();
            var reference = new WeakReference(v);
            var reference2 = new WeakReference(v2);

            int changeCount = 0;
            var bindSource = new BindContext(v, "TestViewModel2.Name");
            bindSource.SourceMode = SourceMode.Property;
            bindSource.SourceChanged += (sender, args) =>
                {
                    changeCount++;
                    Assert.AreNotEqual(args.OldSource, args.NewSource);
                    Assert.AreEqual(SourceMode.Property, args.SourceMode);
                };

            v.TestViewModel2 = v2;
            Assert.AreEqual(0, changeCount);

            v2 = null;
            v.TestViewModel2 = null;
            GC.Collect();
            Assert.IsFalse(reference2.IsAlive);

            v = null;
            GC.Collect();
            Assert.IsFalse(reference.IsAlive);

            GC.KeepAlive(bindSource);
        }
        public void Test_WeakNotify_OneWay()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            int changedCount = 0;

            BindingValueChangedHandler changeHandler = (source, args) =>
                {
                    changedCount++;
                    Assert.IsTrue(args.Data != null);
                    Assert.IsNull(args.OldValue);
                    Assert.IsNull(args.NewValue);
                };

            new WeakNotifyBinding(viewModel, "Age", view, null)
                .Initialize<WeakNotifyBinding>()
                .AttachSourceEvent("TestViewEvent")
                .OfType<WeakNotifyBinding>().SetSourceChanged(changeHandler);

            Assert.AreEqual(0, changedCount);

            GC.Collect();

            view.RaiseTestViewEvent();

            Assert.AreEqual(1, changedCount);
        }
Exemplo n.º 6
0
        public void Test_MemoryLeak_WeakBinding_AttachEvent()
        {
            var viewModel = new TestViewModel();
            var viewModel2 = new TestViewModel2();
            var reference = new WeakReference(viewModel2);
            var reference2 = new WeakReference(viewModel);

            WeakBinding binding = new WeakPropertyBinding(viewModel2, "Name", viewModel, "Name")
                .Initialize<WeakPropertyBinding>()
                .SetMode(BindMode.TwoWay)
                .AttachTargetEvent("TestViewModelEvent");
            viewModel.Name = Name1;

            Assert.AreEqual(viewModel2.Name, Name1);

            viewModel2.Name = Name2;
            Assert.AreNotEqual(viewModel.Name, Name2);

            viewModel2.RaiseTestViewModelEvent();
            Assert.AreEqual(viewModel.Name, Name2);

            viewModel2 = null;
            GC.Collect();
            Assert.IsFalse(reference.IsAlive);

            viewModel = null;
            GC.Collect();
            Assert.IsFalse(reference2.IsAlive);

            GC.KeepAlive(binding);
        }
        public void Test_WeakCommandBinding_CanExecuteChangedCallback()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            Assert.IsFalse(view.Enable);
            bool isEnable = false;

            WeakCommandBinding commandBinding = new WeakCommandBinding(view, null, viewModel, "AddAgeCommand")
                .Initialize<WeakCommandBinding>()
                .AttachTargetEvent("TestViewEvent")
                .OfType<WeakCommandBinding>()
                .AddEnableProperty("Enable")
                .Watch("Age")
                .SetCanExecuteChanged((sender, args) => { isEnable = args.CanExecute; });

            Assert.IsTrue(view.Enable);
            Assert.IsTrue(isEnable);

            Assert.AreEqual(0, viewModel.Age);

            view.RaiseTestViewEvent();
            Assert.AreEqual(1, viewModel.Age);

            Assert.IsTrue(view.Enable);
            Assert.IsTrue(isEnable);

            commandBinding.SetCanExecuteChanged(null);

            viewModel.Age++;
            Assert.IsFalse(view.Enable);
            Assert.IsTrue(isEnable);
        }
Exemplo n.º 8
0
        public void Test_WeakEntry_Equals()
        {
            var viewModel = new TestViewModel();
            var viewModel2 = new TestViewModel();

            var weakEntry = new WeakEntry("Text1", viewModel, "Name");
            var weakEntry1 = new WeakEntry("Text1", viewModel2, "Name");
            var weakEntry2 = new WeakEntry("Text2", viewModel, "Name");
            var weakEntry3 = new WeakEntry("Text1", viewModel, "Age");
            var weakEntry4 = new WeakEntry("Text1", viewModel, "Name");
            var weakEntry5 = new WeakEntry(string.Empty, viewModel, "Name");
            var weakEntry6 = new WeakEntry("Text2", viewModel, string.Empty);

            Assert.IsFalse(weakEntry.Equals(weakEntry1));
            Assert.IsFalse(weakEntry.Equals(weakEntry2));
            Assert.IsFalse(weakEntry.Equals(weakEntry3));
            Assert.IsFalse(weakEntry1.Equals(weakEntry2));
            Assert.IsFalse(weakEntry1.Equals(weakEntry3));
            Assert.IsFalse(weakEntry2.Equals(weakEntry5));
            Assert.IsFalse(weakEntry2.Equals(weakEntry6));
            Assert.IsTrue(weakEntry1 != weakEntry3);

            Assert.IsTrue(weakEntry.Equals(weakEntry4));
            Assert.IsTrue(weakEntry == weakEntry4);
        }
Exemplo n.º 9
0
        public void Test_BindingEngine_ClearBinding_Object()
        {
            var viewModel = new TestViewModel();
            var viewModel2 = new TestViewModel2();

            BindingEngine.SetPropertyBinding(viewModel2, "Name", viewModel, "Name")
                .SetMode(BindMode.TwoWay);

            viewModel.Name = Name1;
            Assert.AreEqual(viewModel2.Name, Name1);

            BindingEngine.SetPropertyBinding(viewModel2, "Age", viewModel, "Age")
                .SetMode(BindMode.TwoWay);

            BindingEngine.ClearBinding(new TestViewModel());

            viewModel.Age = 2;
            Assert.AreEqual(viewModel2.Age, 2);

            BindingEngine.ClearBinding(viewModel2);

            viewModel.Name = Name2;
            Assert.AreNotEqual(viewModel2.Name, Name2);
            viewModel.Age = 3;
            Assert.AreNotEqual(viewModel2.Age, 3);
        }
Exemplo n.º 10
0
        public void Test_WeakBindEvent_NormalProperty()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();
            var propertyBinding = new WeakPropertyBinding(view, "Text1", viewModel, "Name")
                .Initialize<WeakPropertyBinding>();

            var weakEvent = new WeakEvent(viewModel);

            Assert.IsFalse(weakEvent.IsAttached);
        }
        public void Test_WeakCommandBinding_Basic()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            new WeakCommandBinding(view, null, viewModel, "AddAgeCommand")
                .Initialize<WeakCommandBinding>()
                .AttachTargetEvent("TestViewEvent");

            Assert.AreEqual(0, viewModel.Age);

            view.RaiseTestViewEvent();

            Assert.AreEqual(1, viewModel.Age);
        }
Exemplo n.º 12
0
        public void Test_WeakBinding_AttachSourceEvent()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            new WeakPropertyBinding(view, "Text1", viewModel, "Name")
                .Initialize<WeakPropertyBinding>()
                .AttachSourceEvent("TestViewModelEvent");
            viewModel.Name = Name1;

            Assert.AreNotEqual(view.Text1, Name1);

            viewModel.RaiseTestViewModelEvent();
            Assert.AreEqual(view.Text1, Name1);
        }
Exemplo n.º 13
0
        public void Test_WeakSource_ClearBinding()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();
            var ws = new WeakTarget(view);

            ws.SetBinding<WeakPropertyBinding>("Text1", viewModel, "Name");

            viewModel.Name = Name1;
            Assert.AreEqual(view.Text1, Name1);

            ws.ClearBinding("Text1", viewModel, "Name");

            viewModel.Name = Name2;
            Assert.AreNotEqual(view.Text2, Name2);
        }
Exemplo n.º 14
0
        public void Test_BindingEngine_ClearBinding_Expression()
        {
            var viewModel = new TestViewModel();
            var view = new TestViewModel2();

            BindingEngine.SetPropertyBinding(view, "Name", viewModel, "Name")
                .SetMode(BindMode.TwoWay);

            viewModel.Name = Name1;
            Assert.AreEqual(view.Name, Name1);

            BindingEngine.ClearBinding(view, i => i.Name, viewModel, o => o.Name);

            viewModel.Name = Name2;
            Assert.AreNotEqual(view.Name, Name2);
        }
        public void Test_WeakCollectionBinding_CollecionHandler()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            new WeakCollectionBinding(view, "CollectionNames", viewModel, "TestViewModelCollection")
                .Initialize<WeakCollectionBinding>()
                .SetTargetCollectionHandler(new TestDataCollectionHandler());

            view.CollectionNames = new List<string>();
            var collections = new ObservableCollection<TestViewModel2>();
            viewModel.TestViewModelCollection = collections;

            collections.Add(new TestViewModel2 { Name = Name1 });
            Assert.AreEqual(1, view.CollectionNames.Count);
            Assert.AreEqual(Name1, view.CollectionNames[0]);

            collections.RemoveAt(0);
            Assert.AreEqual(0, view.CollectionNames.Count);

            collections.Add(new TestViewModel2 { Name = Name2 });
            collections.Clear();
            Assert.AreEqual(0, view.CollectionNames.Count);

            viewModel = new TestViewModel();
            view = new TestView();

            new WeakCollectionBinding(viewModel, "TestViewModelCollection", view, "CollectionNames")
                .Initialize<WeakCollectionBinding>()
                .SetMode<WeakCollectionBinding>(BindMode.OneWayToSource)
                .SetSourceCollectionHandler(new TestDataCollectionHandler());

            view.CollectionNames = new List<string>();
            collections = new ObservableCollection<TestViewModel2>();
            viewModel.TestViewModelCollection = collections;

            collections.Add(new TestViewModel2 { Name = Name1 });
            Assert.AreEqual(1, view.CollectionNames.Count);
            Assert.AreEqual(Name1, view.CollectionNames[0]);

            collections.RemoveAt(0);
            Assert.AreEqual(0, view.CollectionNames.Count);

            collections.Add(new TestViewModel2 { Name = Name2 });
            collections.Clear();
            Assert.AreEqual(0, view.CollectionNames.Count);
        }
        public void Test_WeakMethodBinding_SourceMethod()
        {
            var viewModel = new TestViewModel();
            var button = new Button();

            new WeakMethodBinding(viewModel, null, button, null)
                .Initialize<WeakMethodBinding>()
                .AttachTargetMethod("AddAge", null)
                .AttachTargetCanInvokeMethod("CanAddAge", null)
                .AttachSourceEvent("Click");

            Assert.AreEqual(0, viewModel.Age);

            button.PerformClick();

            Assert.AreEqual(1, viewModel.Age);
        }
        public void Test_MethodInvoker_Basic()
        {
            var viewModel5 = new TestViewModel5();

            var canMethodInvoker = new MethodInvoker(new BindContext(viewModel5, "TestViewModel"), "CanAddAge", null);
            var methodInvoker = new MethodInvoker(new BindContext(viewModel5, "TestViewModel"), "AddAge", null);

            bool value = canMethodInvoker.CanInvoke();
            Assert.IsFalse(value);
            methodInvoker.Invoke();

            viewModel5.TestViewModel = new TestViewModel();
            value = canMethodInvoker.CanInvoke();
            Assert.IsTrue(value);
            methodInvoker.Invoke();

            Assert.AreEqual(1, viewModel5.TestViewModel.Age);

            var canMethodInvoker2 = new MethodInvoker(new BindContext(viewModel5, "TestViewModel"), "AddAge", null);

            MissingMemberException exception = null;
            try
            {
                canMethodInvoker2.CanInvoke();
            }
            catch (MissingMemberException e)
            {
                exception = e;
            }
            Assert.IsNotNull(exception);

            var vm = new TestViewModel();

            var canMethodInvoker3 = new MethodInvoker(new BindContext(viewModel5, "TestViewModel"), "CanSetAge",
                new[] { new BindContext(vm, "Age") });
            var methodInvoker2 = new MethodInvoker(new BindContext(viewModel5, "TestViewModel"), "SetAge",
                new[] { new BindContext(vm, "Age") });

            Assert.IsTrue(canMethodInvoker3.CanInvoke());
            vm.Age = 6;
            Assert.AreNotEqual(6, viewModel5.TestViewModel.Age);

            methodInvoker2.Invoke();
            Assert.AreEqual(6, viewModel5.TestViewModel.Age);
        }
        public void Test_WeakNotify_OneWayToSource()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            int changedCount = 0;

            new WeakNotifyBinding(view, null, viewModel, "Age")
                .Initialize<WeakNotifyBinding>()
                .AttachTargetEvent("TestViewEvent")
                .OfType<WeakNotifyBinding>()
                .SetTargetChanged<WeakNotifyBinding>((source, args) => { changedCount++; });

            Assert.AreEqual(0, changedCount);

            view.RaiseTestViewEvent();

            Assert.AreEqual(1, changedCount);
        }
Exemplo n.º 19
0
        public void Test_WeakSource_ClearAllBindings()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();
            var ws = new WeakTarget(view);

            ws.SetBinding<WeakPropertyBinding>( "Text1", viewModel,"Name");
            ws.SetBinding<WeakPropertyBinding>("ValueInt", viewModel, "Age");

            viewModel.Name = Name1;
            Assert.AreEqual(view.Text1, Name1);
            viewModel.Age = 2;
            Assert.AreEqual(view.ValueInt, 2);

            ws.ClearBindings();
            viewModel.Name = Name2;
            viewModel.Age = 3;

            Assert.AreNotEqual(view.Text1, Name2);
            Assert.AreNotEqual(view.ValueInt, Name2);
        }
Exemplo n.º 20
0
        public void Test_WeakBinding_AttachTargetEvent_2()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();
            var button = new Button();

            new WeakPropertyBinding(view, "Text1", viewModel, "Name")
                .Initialize<WeakPropertyBinding>()
                .SetMode(BindMode.TwoWay)
                .AttachTargetEvent(button, null, "Click");
            viewModel.Name = Name1;

            Assert.AreEqual(view.Text1, Name1);

            view.Text1 = Name2;
            Assert.AreNotEqual(viewModel.Name, Name2);

            button.PerformClick();
            Assert.AreEqual(viewModel.Name, Name2);
        }
Exemplo n.º 21
0
        public void Test_WeakBinding_AttachSourceEvent_2()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();
            var button = new Button();

            WeakBinding binding = new WeakPropertyBinding(viewModel, "Name", view, "Text1")
                .Initialize<WeakPropertyBinding>()
                .SetMode(BindMode.OneWay)
                .AttachSourceEvent(button, "Click");

            view.Text1 = Name1;
            Assert.AreNotEqual(viewModel.Name, Name1);

            button.PerformClick();
            Assert.AreEqual(viewModel.Name, Name1);
            binding.Clear();

            viewModel = new TestViewModel();
            view = new TestView();
            button = new Button();

            new WeakPropertyBinding(viewModel, "Name", view, "Text1")
                .Initialize<WeakPropertyBinding>()
                .SetMode(BindMode.OneWay)
                .AttachSourceEvent(button, null, "Click");

            view.Text1 = Name1;
            Assert.AreNotEqual(viewModel.Name, Name1);

            button.PerformClick();
            Assert.AreEqual(viewModel.Name, Name1);
        }
Exemplo n.º 22
0
        public void Test_WeakBinding_Update()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            WeakBinding binding = new WeakPropertyBinding(view, "Text1", viewModel, "Name")
                .Initialize<WeakPropertyBinding>()
                .SetMode(BindMode.TwoWay)
                .AttachTargetEvent("TestViewEvent");
            viewModel.Name = Name1;

            Assert.AreEqual(view.Text1, Name1);

            view.Text1 = Name2;
            Assert.AreNotEqual(viewModel.Name, Name2);

            view.RaiseTestViewEvent();
            Assert.AreEqual(viewModel.Name, Name2);

            binding.Update("Text2", viewModel, "Name");

            viewModel.Name = Name1;

            Assert.AreNotEqual(view.Text1, Name1);
            Assert.AreEqual(view.Text2, Name1);
        }
Exemplo n.º 23
0
        public void Test_WeakBinding_MemoryLeak()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            int changed = 0;

            WeakPropertyBinding binding = new WeakPropertyBinding(view, "Text1", viewModel, "Name")
                .Initialize<WeakPropertyBinding>()
                .SetMode(BindMode.OneWay)
                .AttachTargetEvent("TestViewEvent")
                .SetTargetChanged<WeakPropertyBinding>((sender, args) => { changed++; });

            viewModel.Name = Name1;
            Assert.AreEqual(Name1, view.Text1);
            Assert.AreEqual(1, changed);

            viewModel.Name = Name2;
            Assert.AreEqual(Name2, view.Text1);
            Assert.AreEqual(2, changed);

            view = null;
            GC.Collect();
            viewModel.Name = Name1;
            Assert.AreEqual(2, changed);
        }
Exemplo n.º 24
0
        public void Test_WeakBinding_GetBindSource()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            WeakBinding binding = new WeakPropertyBinding(viewModel, "Name", view, "Text1")
                .Initialize<WeakPropertyBinding>()
                .SetMode(BindMode.TwoWay)
                .AttachSourceEvent(typeof(TestView), "StaticTestViewEvent");
            viewModel.Name = Name1;

            Assert.AreEqual(view.Text1, Name1);

            view.Text1 = Name2;
            Assert.AreNotEqual(viewModel.Name, Name2);

            TestView.RaiseStaticTestViewEvent();
            Assert.AreEqual(viewModel.Name, Name2);

            BindContext context = binding.GetBindContext(viewModel, "Name");
            Assert.AreEqual(binding.BindTarget, context);

            BindContext source2 = binding.GetBindContext(view, "Text1");
            Assert.AreEqual(binding.BindSource, source2);
        }
Exemplo n.º 25
0
        public void Test_WeakBinding_DoConventions()
        {
            var viewModel = new TestViewModel();
            var viewModel2 = new TestViewModel2();

            var binding = new WeakPropertyBinding(viewModel2, "Name", viewModel, "Name")
                .Initialize<WeakPropertyBinding>();
            binding.DeActivate();

            Assert.IsFalse(binding.IsActivate);
            binding.Activate();

            viewModel.Name = Name1;

            binding.DeActivate();
            viewModel.Name = Name2;

            Assert.AreNotEqual(viewModel2.Name, Name2);

            binding.Activate();
            Assert.AreEqual(viewModel2.Name, Name2);
        }
Exemplo n.º 26
0
        public void Test_WeakBinding_DeActive()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            WeakBinding binding = new WeakPropertyBinding(view, "Text1", viewModel, "Name")
                .Initialize<WeakPropertyBinding>()
                .SetMode(BindMode.OneWay)
                .AttachTargetEvent("TestViewEvent");
            viewModel.Name = Name1;

            binding.DeActivate();
            viewModel.Name = Name2;

            Assert.AreNotEqual(view.Text1, Name2);

            binding.Activate();
            Assert.AreEqual(view.Text1, Name2);
        }
Exemplo n.º 27
0
        public void Test_WeakBinding_AttachTargetEvent_3()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            new WeakPropertyBinding(view, "Text1", viewModel, "Name")
                .Initialize<WeakPropertyBinding>()
                .SetMode(BindMode.TwoWay)
                .AttachTargetEvent(typeof(TestView), "StaticTestViewEvent");
            viewModel.Name = Name1;

            Assert.AreEqual(view.Text1, Name1);

            view.Text1 = Name2;
            Assert.AreNotEqual(viewModel.Name, Name2);

            TestView.RaiseStaticTestViewEvent();
            Assert.AreEqual(viewModel.Name, Name2);
        }
Exemplo n.º 28
0
        public void Test_BindingEngine_PropertyBinding_Expression()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            BindingEngine.SetPropertyBinding(view, o => o.Text1, viewModel, i => i.Name)
                .SetMode(BindMode.TwoWay)
                .AttachTargetEvent("TestViewEvent");

            viewModel.Name = Name1;

            Assert.AreEqual(view.Text1, Name1);

            view.Text1 = Name2;
            Assert.AreNotEqual(viewModel.Name, Name2);

            view.RaiseTestViewEvent();
            Assert.AreEqual(viewModel.Name, Name2);
        }
        public void Test_WeakMethodBinding_SourceMethod_2()
        {
            var viewModel2 = new TestViewModel2();
            var viewModel = new TestViewModel();
            var button = new Button();

            var binding = new WeakMethodBinding(viewModel2, null, button, null)
                .Initialize<WeakMethodBinding>()
                .AttachTargetMethod(new BindContext(viewModel, null), "AddAge", null)
                .AttachTargetCanInvokeMethod(new BindContext(viewModel, null), "CanAddAge", null)
                .AttachSourceEvent("Click")
                .OfType<WeakMethodBinding>();

            Assert.AreEqual(0, viewModel.Age);

            button.PerformClick();

            Assert.AreEqual(1, viewModel.Age);

            button.PerformClick();
            Assert.AreEqual(2, viewModel.Age);

            button.PerformClick();
            Assert.AreEqual(2, viewModel.Age);

            binding.DetachTargetCanInvokeMethod();
            button.PerformClick();
            Assert.AreEqual(3, viewModel.Age);

            binding.DetachTargetMethod();
            button.PerformClick();
            Assert.AreEqual(3, viewModel.Age);
        }
Exemplo n.º 30
0
        public void Test_BindingEngine_PropertyBinding()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            var binding = BindingEngine.SetPropertyBinding(view, "Text1", viewModel, "Name")
                .SetMode(BindMode.TwoWay)
                .AttachTargetEvent("TestViewEvent");

            Assert.AreEqual("Name", binding.SourceProperty);
            Assert.AreEqual("Text1", binding.TargetProperty);

            viewModel.Name = Name1;

            Assert.AreEqual(Name1, view.Text1);

            view.Text1 = Name2;
            Assert.AreNotEqual(Name2, viewModel.Name);

            view.RaiseTestViewEvent();
            Assert.AreEqual(Name2, viewModel.Name);
        }