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_BindingEngine_MethodBinding_Expression() { var viewModel = new TestViewModel5(); var button = new Button(); BindingEngine.SetMethodBinding(button, null, viewModel, o => o.TestViewModel) .Initialize<WeakMethodBinding>() .AttachSourceMethod("AddAge", null) .AttachSourceCanInvokeMethod("CanAddAge", null) .AttachTargetEvent("Click"); viewModel.TestViewModel = new TestViewModel(); Assert.AreEqual(0, viewModel.TestViewModel.Age); button.PerformClick(); Assert.AreEqual(1, viewModel.TestViewModel.Age); }