Пример #1
0
        /// <typeparam name="T">指定对象类型</typeparam>
        /// <param name="source">TreeNode对象</param>
        /// <param name="target">指定对象</param>
        /// <param name="nameProperty">显示的对象属性</param>
        /// <param name="childsProperty">指定对象的子对象</param>
        /// <returns>TreeNode</returns>
        public static TreeNode Parse <T>(this TreeNode source, T target, Expression <Func <string> > nameProperty, Expression <Func <IEnumerable <T> > > childsProperty)
        {
            PropertyInfo propName   = PropertySupport.ExtractProperty(nameProperty);
            PropertyInfo propChilds = PropertySupport.ExtractProperty(childsProperty);

            try
            {
                if (target == null)
                {
                    throw new NullReferenceException("解析的目标不能为空!");
                }
                TreeNode node     = new TreeNode();
                string   nodeName = propName.GetValue(target, null).ToString();
                node.Name = nodeName;
                object obj = propChilds.GetValue(target, null);
                if (obj != null && obj is IEnumerable <T> )
                {
                    foreach (var item in obj as IEnumerable <T> )
                    {
                        var cNode = node.Parse(item, nameProperty, childsProperty);
                        cNode.Target = item;

                        cNode.Parent = node;
                        node.Childs.Add(cNode);
                    }
                }
                node.Target = target;
                return(node);
            }
            catch
            {
                throw;
            }
        }
Пример #2
0
        /// <summary>
        /// Raises this object's PropertyChanged event.
        /// </summary>
        /// <typeparam name="T">The type of the property that has a new value</typeparam>
        /// <param name="propertyExpression">A Lambda expression representing the property that has a new value.</param>
        protected void RaisePropertyChanged <T>(Expression <Func <T> > propertyExpression)
        {
            var propertyName = PropertySupport.ExtractPropertyName(propertyExpression);

            this.RaisePropertyChanged(propertyName);
        }