internal void PushData() { if (IsBinding) { Object value = bindToObject.GetValue(); value = FormatObject(value); SetPropValue(value); modified = false; } else { SetPropValue(null); } }
internal bool PushData(bool force) { object dataSourceValue = null; Exception lastException = null; // Don't push if update mode is 'Never' (unless caller is FORCING us to push) if (!force && ControlUpdateMode == ControlUpdateMode.Never) { return(false); } // Re-entrancy check between push and pull (new for Whidbey - requires FormattingEnabled) if (inPushOrPull && formattingEnabled) { return(false); } inPushOrPull = true; try { if (IsBinding) { dataSourceValue = bindToObject.GetValue(); object controlValue = FormatObject(dataSourceValue); SetPropValue(controlValue); modified = false; } else { SetPropValue(null); } } catch (Exception ex) { lastException = ex; // This try/catch is new for Whidbey. To preserve Everett behavior, re-throw the // exception unless this binding has formatting enabled (new Whidbey feature). if (!FormattingEnabled) { throw; } } finally { inPushOrPull = false; } if (FormattingEnabled) { // Whidbey... // Raise the BindingComplete event, giving listeners a chance to process any errors that occured, and decide // whether the operation should be cancelled. But don't emit the event if we didn't actually update the control. BindingCompleteEventArgs args = CreateBindingCompleteEventArgs(BindingCompleteContext.ControlUpdate, lastException); OnBindingComplete(args); return(args.Cancel); } else { // Everett... // Do not emit BindingComplete events, or allow the operation to be cancelled. return(false); } }