/// <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); }