/// <summary> /// 获得内容节点 /// </summary> /// <returns></returns> private static IList <HtmlNode> GetContentNodes(HtmlNode objNode, bool ignoreBlank) { var childNodes = objNode.TrimChildNodes(ignoreBlank); List <HtmlNode> nodes = new List <HtmlNode>(); foreach (var child in childNodes) { if (PropertiesLoader.IsPropertyElement(child)) { continue; } nodes.Add(child); } return(nodes); }
/// <summary> /// 该方法可以识别attrValue的类型(动态标记或实际值),并将其值设置到对象d的dp属性上 /// </summary> /// <param name="d"></param> /// <param name="dp"></param> /// <param name="propertyInfo">属性信息,由于有可能需要外界指定属性信息,所以我们公开这个设置,例如:XamlStyle->Setter对象,这个对象的Value的属性值由TargetType决定,而不是Setter对象的Value类型决定</param> /// <param name="attrValue"></param> internal static void SetValue(DependencyObject d, DependencyProperty dp, PropertyInfo propertyInfo, string attrValue) { var e = PropertiesLoader.CreateMarkupExtension(attrValue); object value = null; if (e != null) { value = e.ProvideValue(d, dp); } else { value = GetValue(attrValue, propertyInfo); } d.SetValue(dp, value); }
/// <summary> /// 加载属性 /// </summary> /// <param name="obj"></param> /// <param name="objNode"></param> /// <param name="context"></param> protected virtual void LoadProperties(object obj, HtmlNode objNode) { PropertiesLoader.Load(obj, objNode); }