Exemplo n.º 1
0
        private async Task AddToken(object data)
        {
            if (data is string str && TokenItemCreating != null)
            {
                var ticea = new TokenItemCreatingEventArgs(str);
                await TokenItemCreating.InvokeAsync(this, ticea);

                if (ticea.Cancel)
                {
                    return;
                }

                if (ticea.Item != null)
                {
                    data = ticea.Item; // Transformed by event implementor
                }
            }

            var item = new TokenizingTextBoxItem()
            {
                Content = data,
                ContentTemplateSelector = TokenItemTemplateSelector,
                ContentTemplate         = TokenItemTemplate,
                Style = TokenItemStyle
            };

            item.Click        += TokenizingTextBoxItem_Click; // TODO: Wonder if this needs to be in a PrepareContainerForItemOverride?
            item.ClearClicked += TokenizingTextBoxItem_ClearClicked;
            item.KeyUp        += TokenizingTextBoxItem_KeyUp;

            var removeMenuItem = new MenuFlyoutItem
            {
                Text = StringExtensions.GetLocalized("WindowsCommunityToolkit_TokenizingTextBoxItem_MenuFlyout_Remove", "Microsoft.Toolkit.Uwp.UI.Controls/Resources")
            };

            removeMenuItem.Click += (s, e) => TokenizingTextBoxItem_ClearClicked(item, null);

            var menuFlyout = new MenuFlyout();

            menuFlyout.Items.Add(removeMenuItem);
            item.ContextFlyout = menuFlyout;

            var i = _wrapPanel.Children.Count - 1;

            _wrapPanel.Children.Insert(i, item);

            TokenizedItemsInternal.Add(item);

            TokenItemAdded?.Invoke(this, item);
        }
Exemplo n.º 2
0
        private void RemoveToken(TokenizingTextBoxItem item)
        {
            var tirea = new TokenItemRemovedEventArgs(item?.Content, item);

            TokenItemRemoved?.Invoke(this, tirea);

            if (tirea.Cancel)
            {
                return;
            }

            SelectedItemsInternal.Remove(item);
            TokenizedItemsInternal.Remove(item);

            var itemIndex = Math.Max(_wrapPanel.Children.IndexOf(item) - 1, 0);

            _wrapPanel.Children.Remove(item);

            if (_wrapPanel.Children[itemIndex] is Control control)
            {
                control.Focus(FocusState.Programmatic);
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TokenizingTextBox"/> class.
 /// </summary>
 public TokenizingTextBox()
 {
     DefaultStyleKey = typeof(TokenizingTextBox);
     TokenizedItemsInternal.Clear();
 }