Exemplo n.º 1
0
        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);
        }
        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.º 3
0
        public void Test_WeakCommandBinding_RemoveEnableProperty_Expression()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            Assert.IsFalse(view.Enable);

            WeakCommandBinding weakCommandBinding = new WeakCommandBinding(view, null, viewModel, "AddAgeCommand")
                                                    .Initialize <WeakCommandBinding>()
                                                    .AttachTargetEvent("TestViewEvent")
                                                    .OfType <WeakCommandBinding>()
                                                    .AddEnableProperty <TestView>(i => i.Enable);

            Assert.IsTrue(view.Enable);

            Assert.AreEqual(0, viewModel.Age);

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

            Assert.IsTrue(view.Enable);

            weakCommandBinding.RemoveEnableProperty <TestView>(i => i.Enable);

            view.RaiseTestViewEvent();
            Assert.IsTrue(view.Enable);
        }
Exemplo n.º 4
0
        public void Test_WeakCommandBinding_UnWatch()
        {
            var viewModel = new TestViewModel();
            var view      = new TestView();

            Assert.IsFalse(view.Enable);

            WeakCommandBinding commandBinding = new WeakCommandBinding(view, null, viewModel, "AddAgeCommand")
                                                .Initialize <WeakCommandBinding>()
                                                .AttachTargetEvent("TestViewEvent")
                                                .OfType <WeakCommandBinding>()
                                                .AddEnableProperty("Enable")
                                                .Watch(viewModel, "Age");

            commandBinding.Watch(viewModel, "Age");

            Assert.IsTrue(view.Enable);

            Assert.AreEqual(0, viewModel.Age);

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

            Exception exception = null;

            try
            {
                commandBinding.Watch(null, "Age");
            }
            catch (ArgumentNullException e)
            {
                exception = e;
            }
            Assert.IsNotNull(exception);

            viewModel.Age++;
            Assert.IsFalse(view.Enable);

            viewModel.Age--;
            Assert.IsTrue(view.Enable);

            commandBinding.UnWatch("Age");

            viewModel.Age++;
            Assert.IsTrue(view.Enable);

            commandBinding.Watch(viewModel, "Age");
            Assert.IsFalse(view.Enable);

            commandBinding.UnWatch(viewModel, "Age");
            viewModel.Age--;
            Assert.IsFalse(view.Enable);
        }
        public void Test_WeakCommandBinding_UnWatch_Expression()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            Assert.IsFalse(view.Enable);

            WeakCommandBinding commandBinding = new WeakCommandBinding(view, null, viewModel, "AddAgeCommand")
                .Initialize<WeakCommandBinding>()
                .AttachTargetEvent("TestViewEvent")
                .OfType<WeakCommandBinding>()
                .AddEnableProperty("Enable")
                .Watch<TestViewModel>(i => i.Age);

            Assert.IsTrue(view.Enable);

            Assert.AreEqual(0, viewModel.Age);

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

            Assert.IsTrue(view.Enable);

            viewModel.Age++;
            Assert.IsFalse(view.Enable);

            viewModel.Age--;
            Assert.IsTrue(view.Enable);

            commandBinding.UnWatch<TestViewModel>(null);
            commandBinding.UnWatch(null);

            Exception exception = null;
            try
            {
                commandBinding.UnWatch(null, null);
            }
            catch (ArgumentNullException e)
            {
                exception = e;
            }
            Assert.IsNotNull(exception);

            commandBinding.UnWatch<TestViewModel>(o => o.Age);

            viewModel.Age++;
            Assert.IsTrue(view.Enable);
        }
        public void Test_WeakCommandBinding_RemoveEnableProperty_Expression()
        {
            var viewModel = new TestViewModel();
            var view = new TestView();

            Assert.IsFalse(view.Enable);

            WeakCommandBinding weakCommandBinding = new WeakCommandBinding(view, null, viewModel, "AddAgeCommand")
                .Initialize<WeakCommandBinding>()
                .AttachTargetEvent("TestViewEvent")
                .OfType<WeakCommandBinding>()
                .AddEnableProperty<TestView>(i => i.Enable);

            Assert.IsTrue(view.Enable);

            Assert.AreEqual(0, viewModel.Age);

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

            Assert.IsTrue(view.Enable);

            weakCommandBinding.RemoveEnableProperty<TestView>(i => i.Enable);

            view.RaiseTestViewEvent();
            Assert.IsTrue(view.Enable);
        }
 public static void Bind(this IBindingContext bindingContext, object target, string commandEvent, string enabledProperty, ICommand command)
 {
     var binding = new WeakCommandBinding(target, commandEvent, enabledProperty, command);
     bindingContext.Bindings.Add(binding);
 }