private void HandleInstanceMemberBeforeSetByUi(object sender, EventArgs e) { if (BeforePropertyChange != null) { BeforePropertyChangedArgs args = (BeforePropertyChangedArgs)e; args.Owner = this.Instance; args.OldValue = ((InstanceMember)sender).Value; args.PropertyName = ((InstanceMember)sender).Name; BeforePropertyChange(((InstanceMember)sender).Name, args); } }
private void HandleBeforePropertyChange(string propertyName, BeforePropertyChangedArgs changeArgs) { if (propertyName == "Name") { // make sure this is a valid name, and if not, let's change it string whyIsntValid; var instance = ArrowState.Self.CurrentInstance; var elementSave = ArrowState.Self.CurrentArrowElementSave; NameVerifier.Self.IsInstanceNameValid(changeArgs.NewValue as string, out whyIsntValid, instance, elementSave); if (!string.IsNullOrEmpty(whyIsntValid)) { MessageBox.Show("Invalid name:\n" + whyIsntValid); changeArgs.OverridingValue = changeArgs.OldValue; } } }
internal void CallBeforeSetByUi(IDataUi dataUi) { if (BeforeSetByUi != null) { BeforePropertyChangedArgs args = new BeforePropertyChangedArgs(); object value; dataUi.TryGetValueOnUi(out value); args.NewValue = value; BeforeSetByUi(this, args); if (args.WasManuallySet) { // The event changed it, so let's force it back on the UI dataUi.TrySetValueOnUi(args.OverridingValue); } } }