private void lbTokenTemplates_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            ListBox lb = (ListBox)sender;
            TokenTemplateInfoPropertyNodeItem selectedItem = lb?.SelectedItem as TokenTemplateInfoPropertyNodeItem;

            if (selectedItem == null)
            {
                return;
            }

            this.btnOK_Click(this.btnOK, null);
        }
        private void lbTokenTemplates_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ListBox lb = (ListBox)sender;
            TokenTemplateInfoPropertyNodeItem selectedItem = lb?.SelectedItem as TokenTemplateInfoPropertyNodeItem;

            if (selectedItem == null)
            {
                return;
            }

            if (!this.isNameChanged)
            {
                this.setName(selectedItem.DefaultName);
            }
            this.tbDescription.Text = selectedItem.Description;
        }
        internal AddTokenWindow(TokenType type) : this()
        {
            this.Type = type;

            TokenTemplateInfoPropertyNodeItem item = typeof(TokenTemplateInfoPropertyNodeItem)?.GetField(type.ToString() + "TokenTemplate", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static)?.GetValue(typeof(TokenTemplateInfoPropertyNodeItem)) as TokenTemplateInfoPropertyNodeItem;

            if (item != null)
            {
                if (item.DefaultName.Contains("{0}"))
                {
                    this.txtName.IsEnabled = false;
                    this.setName("(Auto)");
                }
                else
                {
                    this.txtName.IsEnabled = true;
                    this.setName(item.DefaultName);
                }
            }
        }
        private void lbTokenTemplates_Loaded(object sender, RoutedEventArgs e)
        {
            ListBox lb = (ListBox)sender;

            lb.ItemsSource = TokenTemplateInfoPropertyNodeItem.GetTemplateItemsSource();

            if (this.Type != TokenType.Unknown)
            {
                for (int i = 0; i < this.lbTokenTemplates.Items.Count; i++)
                {
                    TokenTemplateInfoPropertyNodeItem template = this.lbTokenTemplates.Items[i] as TokenTemplateInfoPropertyNodeItem;
                    if (template == null)
                    {
                        continue;
                    }

                    if (this.Type == template.Type)
                    {
                        this.lbTokenTemplates.SelectedIndex = i;
                        break;
                    }
                }
            }
        }