/// <summary> /// Binds the setting proxy to another pipeline stage configuration. /// </summary> /// <param name="configuration">The configuration the proxy should bind to.</param> /// <param name="raiseChangedEvent"> /// <c>true</c> to notify clients that the setting has changed; /// otherwise <c>false</c>. /// </param> void IUntypedSettingProxy.SetProxyTarget(IProcessingPipelineStageConfiguration configuration, bool raiseChangedEvent) { lock (mSync) { if (mConfiguration != configuration) { // Exchange the configuration, rebind the PropertyChanged handler and fire the PropertyChanged event // to notify clients to re-evaluate the setting. mConfiguration = configuration; mSetting?.UnregisterSettingChangedEventHandler(OnSettingPropertyChanged); mSetting = mValueToStringConverter != null && mStringToValueConverter != null ? mConfiguration.RegisterSetting(mSettingName, mDefaultSettingValue, mValueToStringConverter, mStringToValueConverter) : mConfiguration.RegisterSetting(mSettingName, mDefaultSettingValue); mSetting?.RegisterSettingChangedEventHandler(OnSettingPropertyChanged, false); if (raiseChangedEvent) { mStage.ProcessSettingChanged(this); } } } }