void loadPoints(List <string> parentPath, ItemCollection nodes)
        {
            Task.Run(() => {
                try
                {
                    gatewayClient.EnumDevicePoint(this.Device.Address, parentPath, (info) =>
                    {
                        this._container.Dispatcher.Invoke(() => {
                            if (nodes[0] is LoadingTreeItem)
                            {
                                nodes.Clear();
                            }
                            TreeViewItem node = new TreeViewItem();
                            node.Header       = info.Name;
                            if (info.IsFolder)
                            {
                                LoadingTreeItem loadingNode = new LoadingTreeItem();
                                loadingNode.Header          = "正在加载...";
                                node.Items.Add(loadingNode);

                                var path = new List <string>(parentPath);
                                path.Add(info.Name);
                                node.Tag       = path;
                                node.Expanded += Node_Expanded;
                            }
                            else
                            {
                                node.Tag = info.Path;
                                node.PreviewMouseDown += Point_MouseDown;
                            }
                            nodes.Add(node);
                        });
                    });

                    if (nodes[0] is LoadingTreeItem)
                    {
                        this._container.Dispatcher.Invoke(() => {
                            nodes.Clear();
                        });
                    }
                }
                catch (Exception ex)
                {
                    this._container.Dispatcher.Invoke(() => {
                        MessageBox.Show(MainWindow.Instance, ex.Message);
                    });
                }
            });
        }
        /// <summary>
        /// 显示设备点选择控件
        /// </summary>
        /// <param name="btn"></param>
        void showPointSelector(Button btn)
        {
            if (_popup == null)
            {
                TreeView treeview = new TreeView();
                treeview.Width      = 300;
                treeview.Height     = 500;
                treeview.Background = System.Windows.Media.Brushes.AliceBlue;
                LoadingTreeItem loadingNode = new LoadingTreeItem();
                loadingNode.Header = "正在加载...";
                treeview.Items.Add(loadingNode);
                loadPoints(new List <string>(), treeview.Items);

                _popup = new Popup();
                _popup.PlacementTarget = btn;
                _popup.Placement       = PlacementMode.Right;
                _popup.Child           = treeview;
                _popup.StaysOpen       = false;
            }
            _popup.IsOpen = true;
        }