private static object GetValueThroughBinding(object item, Binding binding) { BindingExpressionHelper bindingExpressionHelper = new BindingExpressionHelper(); try { bindingExpressionHelper.DataContext = item; BindingOperations.SetBinding(bindingExpressionHelper, ValueProperty, binding); return(bindingExpressionHelper.GetValue(ValueProperty)); } finally { bindingExpressionHelper.ClearValue(ValueProperty); } }
private static void TextBox_LostFocus(object sender, RoutedEventArgs e) { var textBox = sender as TextBox; if (textBox == null) { return; } var stringFormat = GetStringFormatOnLostFocus(textBox); if (!stringFormat.Contains("{0")) { stringFormat = $"{{0:{stringFormat}}}"; } var value = BindingExpressionHelper.GetValue(textBox.DataContext, textBox.GetBindingExpression(TextBox.TextProperty).ParentBinding); textBox.Text = string.Format(stringFormat, value); }