Пример #1
0
        public static TreeViewItem KlAkView(string Caption, object Item)
        {
            var result = new TreeViewItem()
            {
                Header = Caption
            };

            if (Item == null)
            {
                result.Items.Add(new TreeViewItem()
                {
                    Header = "Нет данных"
                });
            }
            else if (Item is KlAkParams Params)
            {
                foreach (string Name in Params)
                {
                    var Value = Params.get_Item(Name);
                    if (Marshal.IsComObject(Value))
                    {
                        result.Items.Add(KlAkView(Name, Value));
                    }
                    else
                    {
                        result.Items.Add(new TreeViewItem()
                        {
                            Header = Name + ": " + Value.ToString()
                        });
                    }
                }
            }
            else if (Item is KlAkCollection Coll)
            {
                for (int i = 0; i < Coll.Count; i++)
                {
                    object Value = Coll.get_Item(i);
                    if (Marshal.IsComObject(Value))
                    {
                        result.Items.Add(KlAkView(i.ToString(), Value));
                    }
                    else
                    {
                        result.Items.Add(new TreeViewItem()
                        {
                            Header = i.ToString() + ": " + Value.ToString()
                        });
                    }
                }
            }
            else if (Item is IKlAkSettingsStorage Settings)
            {
                var Storages = Settings.Enum();
                for (int i = 0; i < Storages.Count; i++)
                {
                    KlAkParams Storage = Storages.get_Item(i);
                    var        Data    = Settings.Read(Storage.get_Item("PRODUCT"), Storage.get_Item("VERSION"), Storage.get_Item("SECTION"));
                    result.Items.Add(FetchInfo.KlAkView(Storage.get_Item("PRODUCT") + "/" + Storage.get_Item("VERSION") + "/" + Storage.get_Item("SECTION"), Data));
                }
            }
            else
            {
                throw new NotImplementedException("Визуализация типа " + Item.GetType().ToString() + " не реализована.");
            }
            return(result);
        }