Ejemplo n.º 1
0
        /// <summary>
        /// target以下の論理ツリー上の子要素をコンソール出力。階層分インデントする。
        /// 要素がControlでNameを持っていた場合は併せて出力。
        /// </summary>
        private void PrintLogicalChildren(DependencyObject target)
        {
            //代入用変数定義
            ControlChildren SetVal    = new ControlChildren();
            var             TabId     = string.Empty;
            var             MenuName  = string.Empty;
            var             TabID     = new List <string>();
            var             ProgramID = new List <string>();
            var             No        = new List <int>();
            var             Name      = new List <string>();

            WpfUtil.OperateLogicalChildren(target, t =>
            {
                String contName = "";
                Control cont    = t as Control;
                if (cont != null && cont.Name.Length > 0)
                {
                    if (cont.GetType() == typeof(Button))
                    {
                        // 非表示のボタンは表示対象外とする
                        if (cont.Visibility != System.Windows.Visibility.Hidden)
                        {
                            // タブID
                            TabID.Add(TabId);
                            // プログラムID
                            ProgramID.Add(cont.Name);
                            // メニュー番号
                            int SubNo = Int32.Parse(Convert.ToString(((Button)(cont)).Content).Substring(0, Convert.ToString(((Button)(cont)).Content).IndexOf(".")));
                            No.Add(SubNo);
                            // メニュー名称
                            Name.Add(Convert.ToString(((Button)(cont)).Content).Substring(Convert.ToString(((Button)(cont)).Content).IndexOf(".") + 1));
                        }
                    }
                    else if (cont.GetType() == typeof(TabItem))
                    {
                        MenuName = Convert.ToString(((HeaderedContentControl)(cont)).Header);
                        TabId    = cont.Name;
                    }
                }

                if (!contName.Equals(string.Empty))
                {
                    Console.WriteLine(contName);
                }
            }
                                           );

            //メニュ項目設定
            SetVal.TabID     = TabID.ToArray();
            SetVal.ProgramID = ProgramID.ToArray();
            SetVal.No        = No.ToArray();
            SetVal.Name      = Name.ToArray();
            MenuList.Add(MenuName, SetVal);
        }