/// <summary> /// 从表达式中得到值 /// </summary> /// <param name="expression"></param> /// <param name="target"></param> /// <param name="propertyName"></param> /// <returns></returns> private static object ProvideValue(string expression, object target, string propertyName) { var extension = MarkupExtensionFactory.Create(expression); if (extension == null) { return(expression); //不是标记,直接返回表达式作为值 } var value = extension.ProvideValue(target, propertyName); var exp = value as Expression; if (exp != null) { //如果是表达式,那么执行表达式后再获取值 value = exp.GetValue(target, propertyName); } return(value); }
private static MarkupExtension CreateMarkupExtension(string attrValue) { return(MarkupExtensionFactory.Create(attrValue)); }