public PropertyTester(Lifetime lifetime, PropertyProvider propertyProvider) { _propertyProvider = propertyProvider; _propertyProvider.SomeIntProperty.BeforeChange.Advise(lifetime, args => { if (args.New < 0) { args.Cancel = true; } }); _propertyProvider.SomeIntProperty.Change.Advise_HasNew(lifetime, val => MessageBox.ShowInfo($"New property value is {val.New}")); }
public PropertyViewModel(Lifetime lifetime) { // SomeIntProperty of the PropertyProvider instance is updated via the SomeIntProperty of PropertyViewModel // which, in turn, is updated from PropertyView via WPF binding SomeIntProperty = new Property <int>(lifetime, "PropertyViewModel.SomeIntProperty") { Value = 0 }; var propProvider = new PropertyProvider(lifetime); SomeIntProperty.FlowInto(lifetime, propProvider.SomeIntProperty); var propTester = new PropertyTester(lifetime, propProvider); // IProperty FlowChangesInto example SourceProperty = new Property <string>(lifetime, "PropertyViewModel.SourceProperty"); TargetProperty = new Property <string>(lifetime, "PropertyViewModel.TargetProperty"); var propFlow = new PropertyFlow(lifetime); SourceProperty.FlowInto(lifetime, propFlow.SourceProperty); propFlow.TargetProperty.FlowInto(lifetime, TargetProperty); }