public void Init()
        {
            this.ModelList = new ObservableCollection <TreeViewEx.TreeViewExNode>();

            var connection = LoadingConnection.GetConnectionList();

            foreach (var item in connection)
            {
                var            id   = GuidExtend.NewId();
                TreeViewExNode node = new TreeViewExNode()
                {
                    ID           = id,
                    Name         = "N" + id,
                    ConnectionId = item.Id,
                    IsExpanded   = false,
                    Level        = 1,
                    Header       = item.ConnectionName,
                    DataSource   = item.DataSource,
                    DataBase     = item.DataBase,
                    FontSize     = 18
                };

                node.MouseDoubleClick += ServerClick;

                ModelList.Add(node);
            }
            this.DataContext = this;
        }
        private void TreeItemClick(TreeViewExNode item, ItemTypes itemTypes)
        {
            if (!item.IsSelected || item.HasItems)
            {
                return;
            }

            item.Items.Clear();

            var data = new List <string>();

            switch (itemTypes)
            {
            case ItemTypes.Server:
                data = Service.GetDataBases(item.ConnectionStr, item.DataType);
                break;

            case ItemTypes.DataBase:
                data = Service.GetTables(item.ConnectionStr, item.DataType, item.DataBase);
                break;
            }

            DockPanel1.RegisterName(item.Name, item);

            ContextMenu menu = GetOpenItemContextMenu(item.ID, itemTypes);

            item.ContextMenu = menu;

            foreach (var dataItem in data)
            {
                var            id   = GuidExtend.NewId();
                TreeViewExNode node = new TreeViewExNode();
                node.ID            = id;
                node.DataType      = item.DataType;
                node.Name          = "N" + id;
                node.IsExpanded    = false;
                node.Level         = item.Level + 1;
                node.Header        = dataItem;
                node.FontSize      = item.FontSize - 2;
                node.DataSource    = item.DataSource;
                node.ConnectionId  = item.ConnectionId;
                node.ConnectionStr = item.ConnectionStr;

                switch (itemTypes)
                {
                case ItemTypes.Server:
                    node.MouseDoubleClick += DataBaseClick;
                    node.DataBase          = dataItem;
                    break;

                case ItemTypes.DataBase:
                    node.MouseDoubleClick += TableClick;
                    node.DataBase          = item.DataBase;
                    node.TableKey          = dataItem;
                    break;
                }

                item.Items.Add(node);
            }

            item.IsExpanded = true;
        }