private void ResetRuntimeProperties()
        {
            _runtimeProperties = new ManagedPropertyList();

            this.EnumerateHierarchyContainers(item =>
            {
                _runtimeProperties.AddRange(item.GetRuntimeProperties());
            });

            ChangeWithHierarchy();
        }
        /// <summary>
        /// 获取当前可用的属性列表,包括编译时属性、动态运行时属性。
        /// </summary>
        /// <returns></returns>
        public ManagedPropertyList GetAvailableProperties()
        {
            if (_availableCache == null)
            {
                if (_runtimeProperties == null)
                {
                    this.ResetRuntimeProperties();
                }

                _availableCache = new ManagedPropertyList();
                _availableCache.AddRange(
                    _compiledProperties.Concat(_runtimeProperties)
                    );
            }

            return(_availableCache);
        }