private void ValidateParentChecked(InnerCheckItemCollection parent)
 {
     if (parent == null)
     {
         return;
     }
     parent.IsChecked = parent.AnyChildChecked();
     ValidateParentChecked(parent.Prarent);
 }
        /*
         * 父元素回溯一步一步检测递归
         * 子元素集合迭代复制处理
         *
         */
        public override void CheckedChanged()
        {
            bool currentChecked = this.IsChecked;
            //迭代处理子元素
            List <InnerCheckItem> tempItems = new List <InnerCheckItem>();

            tempItems.AddRange(this.Items);
            for (int i = 0; i < tempItems.Count; i++)
            {
                InnerCheckItem tempItem = tempItems[i];
                tempItem.IsChecked = currentChecked;

                InnerCheckItemCollection tempCollection = tempItem as InnerCheckItemCollection;
                if (tempCollection != null)
                {
                    tempItems.AddRange(tempCollection.Items);
                }
            }

            base.CheckedChanged();
        }