public static void Refresh <TSourceValue, TTargetValue>( BindingMode bindingMode, ITwoWayBindingControl <TSourceValue, TTargetValue> bindingControl) { switch (bindingMode) { #if WPF case BindingMode.OneWayToSource: bindingControl.UpdateSourceValue(); break; #endif default: bindingControl.UpdateTargetValue(); break; } }
public static void UpdateSourceValue <TRoot, TSource, TSourceValue, TTarget, TTargetValue>( ITwoWayBindingControl <TSourceValue, TTargetValue> bindingControl, ref DataBindingState <TRoot, TSource, TSourceValue, TTarget, TTargetValue> dataBindingState, Action <TSource, TSourceValue> setSourceValue) where TTarget : DependencyObject { if (dataBindingState.IsUpdating) { return; } var source = dataBindingState.BindingContext.Source; if (source != null) { var target = dataBindingState.Target; if (target != null) { var targetValue = dataBindingState.GetTargetValue(target); var sourceValue = dataBindingState.ConversionParameters.ValueConverter != null ? dataBindingState.ConversionParameters.ValueConverter.ConvertBack( targetValue, typeof(TSourceValue), dataBindingState.ConversionParameters.ConverterParameter, #if WINDOWS_UWP (string)target.GetValue(FrameworkElement.LanguageProperty)) #else ((XmlLanguage)target.GetValue(FrameworkElement.LanguageProperty)).GetSpecificCulture()) #endif : bindingControl.GetSourceValue(targetValue); /*if (!Equals(sourceValue, dataBindingState.CurrentSourceValue)) * {*/ dataBindingState.IsUpdating = true; //// dataBindingState.CurrentSourceValue = sourceValue; setSourceValue(source, sourceValue); dataBindingState.IsUpdating = false; //// } } } dataBindingState.CurrentSource = source; }