public static string FormatBindingValue(string bindingText, object bindingSource, BindingFormatter format, bool isResolvedText = false) { if(string.IsNullOrWhiteSpace(bindingText)) return bindingText; if(bindingText == ".") return bindingSource != null ? bindingSource.ToString() : string.Empty; var matched = BindingExpressionRegex.IsMatch(bindingText); if(matched) { return BindingExpressionRegex.Replace(bindingText, match => { if(match.Success) { object value = GetMemberValue(bindingSource, match.Groups["path"].Value, false); if(format == null) return (value == null ? string.Empty : value.ToString()); else return format(value, match.Groups["format"].Value); } else return match.Value; }); } else { if(isResolvedText) { object value = GetMemberValue(bindingSource, bindingText, false); if(value == null) return bindingText; if(format == null) return value.ToString(); else return format(value, string.Empty); } if(format == null) return bindingText; else return format(bindingText, string.Empty); } }
public static string FormatBindingValue(string bindingText, object bindingSource, BindingFormatter format, bool isResolvedText = false) { if (string.IsNullOrWhiteSpace(bindingText)) { return(bindingText); } if (bindingText == ".") { return(bindingSource != null?bindingSource.ToString() : string.Empty); } var matched = BindingExpressionRegex.IsMatch(bindingText); if (matched) { return(BindingExpressionRegex.Replace(bindingText, match => { if (match.Success) { object value = GetMemberValue(bindingSource, match.Groups["path"].Value, false); if (format == null) { return (value == null ? string.Empty : value.ToString()); } else { return format(value, match.Groups["format"].Value); } } else { return match.Value; } })); } else { if (isResolvedText) { object value = GetMemberValue(bindingSource, bindingText, false); if (value == null) { return(bindingText); } if (format == null) { return(value.ToString()); } else { return(format(value, string.Empty)); } } if (format == null) { return(bindingText); } else { return(format(bindingText, string.Empty)); } } }