private void TokenBox_TokenItemAdded(TokenizingTextBox sender, TokenizingTextBoxItem args) { if (args?.Content is Person person) { PickedPeople.Add(person); } }
public async Task ShouldConfigureTokenizingTextBoxAutomationPeerAsync() { await App.DispatcherQueue.EnqueueAsync(async() => { const string expectedAutomationName = "MyAutomationName"; const string expectedName = "MyName"; const string expectedValue = "Wor"; var items = new ObservableCollection <TokenizingTextBoxTestItem> { new() { Title = "Hello" }, new() { Title = "World" } }; var tokenizingTextBox = new TokenizingTextBox { ItemsSource = items }; await SetTestContentAsync(tokenizingTextBox); var tokenizingTextBoxAutomationPeer = FrameworkElementAutomationPeer.CreatePeerForElement(tokenizingTextBox) as TokenizingTextBoxAutomationPeer; Assert.IsNotNull(tokenizingTextBoxAutomationPeer, "Verify that the AutomationPeer is TokenizingTextBoxAutomationPeer."); // Asserts the automation peer name based on the Automation Property Name value. tokenizingTextBox.SetValue(AutomationProperties.NameProperty, expectedAutomationName); Assert.IsTrue(tokenizingTextBoxAutomationPeer.GetName().Contains(expectedAutomationName), "Verify that the UIA name contains the given AutomationProperties.Name of the TokenizingTextBox."); // Asserts the automation peer name based on the element Name property. tokenizingTextBox.Name = expectedName; Assert.IsTrue(tokenizingTextBoxAutomationPeer.GetName().Contains(expectedName), "Verify that the UIA name contains the given Name of the TokenizingTextBox."); tokenizingTextBoxAutomationPeer.SetValue(expectedValue); Assert.IsTrue(tokenizingTextBoxAutomationPeer.Value.Equals(expectedValue), "Verify that the Value contains the given Text of the TokenizingTextBox."); }); }
private void TokenItemRemoved(TokenizingTextBox sender, TokenItemRemovingEventArgs args) { if (args.Item is NewsCategories category) { vm.Filters.Remove(category.categoryName); UpdatePage(); } }
private void TokenItemAdded(TokenizingTextBox sender, object data) { if (data is NewsCategories category && sender.Items.Count < 5) { vm.Filters.Add(category.categoryName); UpdatePage(); } }
private void TokenItemRemoved(TokenizingTextBox sender, TokenItemRemovingEventArgs args) { if (args.Item is SampleDataType sample) { Debug.WriteLine("Removed Token: " + sample.Text); } else { Debug.WriteLine("Removed Token: " + args.Item); } }
private void TokenItemAdded(TokenizingTextBox sender, TokenizingTextBoxItem args) { // TODO: Add InApp Notification? if (args.Content is SampleDataType sample) { Debug.WriteLine("Added Token: " + sample.Text); } else { Debug.WriteLine("Added Token: " + args.Content); } }
private void TokenItemAdded(TokenizingTextBox sender, object data) { // TODO: Add InApp Notification? if (data is SampleDataType sample) { Debug.WriteLine("Added Token: " + sample.Text); } else { Debug.WriteLine("Added Token: " + data); } }
private async void Page_Loaded(object sender, RoutedEventArgs e) { vm.Categories = await CryptoCompare.GetNewsCategories(); _acv = new AdvancedCollectionView(vm.Categories, false); _acv.SortDescriptions.Add(new SortDescription(nameof(NewsCategories.categoryName), SortDirection.Ascending)); _ttb = CategoriesTokenBox; _acv.Filter = item => !_ttb.Items.Contains(item) && (item as NewsCategories).categoryName.Contains(_ttb.Text, StringComparison.CurrentCultureIgnoreCase); _ttb.SuggestedItemsSource = _acv; await UpdatePage(); }
private void EmailTokenItemRemoved(TokenizingTextBox sender, object args) { if (args is SampleEmailDataType sample) { Debug.WriteLine("Removed Email: " + sample.DisplayName); } else { Debug.WriteLine("Removed Token: " + args); } _acvEmail.RefreshFilter(); }
private void TagTokens_TokenItemAdding(TokenizingTextBox sender, TokenItemAddingEventArgs args) { // If the tag exists, use it. Otherwise cancel the event. if (App.Context.Tags.Local.Any(tag => tag.Name.Equals(args.TokenText, StringComparison.InvariantCultureIgnoreCase))) { Tag tag = App.Context.Tags.Local.First(tag => tag.Name.Equals(args.TokenText, StringComparison.InvariantCultureIgnoreCase)); args.Item = tag; args.Cancel = false; return; } args.Cancel = true; }
public void OnXamlRendered(FrameworkElement control) { if (_ttb != null) { _ttb.TokenItemAdded -= TokenItemAdded; _ttb.TokenItemRemoved -= TokenItemRemoved; } if (control.FindChildByName("TokenBox") is TokenizingTextBox ttb) { _ttb = ttb; _ttb.TokenItemAdded += TokenItemAdded; _ttb.TokenItemRemoved += TokenItemRemoved; } }
public void OnXamlRendered(FrameworkElement control) { if (control.FindChildByName("CategoriesTokenBox") is TokenizingTextBox ttb) { _ttb = ttb; _ttb.TokenItemAdded += TokenItemAdded; _ttb.TokenItemRemoving += TokenItemRemoved; _ttb.TextChanged += TextChanged; _ttb.TokenItemAdding += TokenItemCreating; _ttb.Tapped += TokenBox_Tapped; _acv.Filter = item => !_ttb.Items.Contains(item) && (item as NewsCategories).categoryName.Contains(_ttb.Text, StringComparison.CurrentCultureIgnoreCase); _ttb.SuggestedItemsSource = _acv; } }
private void EmailTokenItemAdding(TokenizingTextBox sender, TokenItemAddingEventArgs args) { // Search our list for a matching person foreach (var person in _emailSamples) { if (args.TokenText.Contains(person.EmailAddress) || args.TokenText.Contains(person.DisplayName, StringComparison.CurrentCultureIgnoreCase)) { args.Item = person; return; } } // Otherwise don't create a token. args.Cancel = true; }
public async Task Init() { await App.Dispatcher.EnqueueAsync(() => { _acv = new AdvancedCollectionView(_samples, false); _acv.SortDescriptions.Add(new SortDescription(nameof(SampleDataType.Text), SortDirection.Ascending)); var xamlTokenizingTextBox = @"<controls:TokenizingTextBox xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' xmlns:controls='using:Microsoft.Toolkit.Uwp.UI.Controls' PlaceholderText='Add Actions' MaxHeight='104' HorizontalAlignment='Center' VerticalAlignment='Center' TextMemberPath='Text' TokenDelimiter = ','> <controls:TokenizingTextBox.SuggestedItemTemplate> <DataTemplate> <StackPanel Orientation='Horizontal'> <SymbolIcon Symbol='{Binding Icon}'/> <TextBlock Text='{Binding Text}' Padding='4,0,0,0'/> </StackPanel> </DataTemplate> </controls:TokenizingTextBox.SuggestedItemTemplate> <controls:TokenizingTextBox.TokenItemTemplate> <DataTemplate> <StackPanel Orientation='Horizontal'> <SymbolIcon Symbol='{Binding Icon}'/> <TextBlock Text='{Binding Text}' Padding='4,0,0,0'/> </StackPanel> </DataTemplate> </controls:TokenizingTextBox.TokenItemTemplate> </controls:TokenizingTextBox>"; _tokenizingTextBox = XamlReader.Load(xamlTokenizingTextBox) as TokenizingTextBox; _tokenizingTextBox.SuggestedItemsSource = _acv; TestsPage.Instance.SetMainTestContent(_tokenizingTextBox); _tokenizingTextBox.AddTokenItem(_samples[0], true); _tokenizingTextBox.AddTokenItem(_samples[1], true); _tokenizingTextBox.AddTokenItem(_samples[2], true); }); }
private async void TokenBox_TokenItemTokenItemAdding(TokenizingTextBox sender, TokenItemAddingEventArgs args) { using (args.GetDeferral()) { // Try and convert typed text to people var graph = ProviderManager.Instance.GlobalProvider.Graph; if (graph != null) { args.Item = (await graph.FindPersonAsync(args.TokenText)).CurrentPage.FirstOrDefault(); } // If we didn't find anyone, then don't add anyone. if (args.Item == null) { args.Cancel = true; // TODO: We should raise a 'person not found' type event or automatically display some feedback? } } }
public async Task ShouldThrowElementNotEnabledExceptionIfValueSetWhenDisabled() { await App.DispatcherQueue.EnqueueAsync(async() => { const string expectedValue = "Wor"; var tokenizingTextBox = new TokenizingTextBox { IsEnabled = false }; await SetTestContentAsync(tokenizingTextBox); var tokenizingTextBoxAutomationPeer = FrameworkElementAutomationPeer.CreatePeerForElement(tokenizingTextBox) as TokenizingTextBoxAutomationPeer; Assert.ThrowsException <ElementNotEnabledException>(() => { tokenizingTextBoxAutomationPeer.SetValue(expectedValue); }); }); }
public async Task ShouldReturnTokensForTokenizingTextBoxAutomationPeerAsync() { await App.DispatcherQueue.EnqueueAsync(async() => { var items = new ObservableCollection <TokenizingTextBoxTestItem> { new() { Title = "Hello" }, new() { Title = "World" } }; var tokenizingTextBox = new TokenizingTextBox { ItemsSource = items }; await SetTestContentAsync(tokenizingTextBox); tokenizingTextBox .SelectAllTokensAndText(); // Will be 3 items due to the `AndText` that will select an empty text item. var tokenizingTextBoxAutomationPeer = FrameworkElementAutomationPeer.CreatePeerForElement(tokenizingTextBox) as TokenizingTextBoxAutomationPeer; Assert.IsNotNull( tokenizingTextBoxAutomationPeer, "Verify that the AutomationPeer is TokenizingTextBoxAutomationPeer."); var selectedItems = tokenizingTextBoxAutomationPeer .GetChildren() .Cast <ListViewItemAutomationPeer>() .Select(peer => peer.Owner as TokenizingTextBoxItem) .Select(item => item?.Content as TokenizingTextBoxTestItem) .ToList(); Assert.AreEqual(3, selectedItems.Count); Assert.AreEqual(items[0], selectedItems[0]); Assert.AreEqual(items[1], selectedItems[1]); Assert.IsNull(selectedItems[2]); // The 3rd item is the empty text item. }); }
/// <inheritdoc/> protected override void OnApplyTemplate() { base.OnApplyTemplate(); if (_tokenBox != null) { _tokenBox.TextChanged -= TokenBox_TextChanged; _tokenBox.TokenItemAdded -= TokenBox_TokenItemAdded; _tokenBox.TokenItemCreating -= TokenBox_TokenItemCreating; _tokenBox.TokenItemRemoved -= TokenBox_TokenItemRemoved; } _tokenBox = GetTemplateChild(PeoplePickerTokenizingTextBoxName) as TokenizingTextBox; if (_tokenBox != null) { _tokenBox.TextChanged += TokenBox_TextChanged; _tokenBox.TokenItemAdded += TokenBox_TokenItemAdded; _tokenBox.TokenItemCreating += TokenBox_TokenItemCreating; _tokenBox.TokenItemRemoved += TokenBox_TokenItemRemoved; } }
/// <summary> /// Initializes a new instance of the <see cref="TokenizingTextBoxAutomationPeer"/> class. /// </summary> /// <param name="owner"> /// The <see cref="TokenizingTextBox" /> that is associated with this <see cref="T:Microsoft.Toolkit.Uwp.UI.Automation.Peers.TokenizingTextBoxAutomationPeer" />. /// </param> public TokenizingTextBoxAutomationPeer(TokenizingTextBox owner) : base(owner) { }
private async void TokenItemRemoved(TokenizingTextBox sender, object args) { await ViewModel.UpdateFilters().ConfigureAwait(false); }
private void TokenBox_TokenItemRemoved(TokenizingTextBox sender, TokenItemRemovedEventArgs args) { PickedPeople.Remove(args.Item as Person); }
private void TokenItemAdded(TokenizingTextBox sender, TokenizingTextBoxItem args) { // TODO: Add InApp Notification? Debug.WriteLine("Added Token: " + args.Content); }
private void TokenItemRemoved(TokenizingTextBox sender, TokenItemRemovedEventArgs args) { Debug.WriteLine("Removed Token: " + args.Item); }
public void OnXamlRendered(FrameworkElement control) { SelectedTokens = new(); SelectedEmails = new(); control.DataContext = this; if (_ttb != null) { _ttb.TokenItemAdded -= TokenItemAdded; _ttb.TokenItemRemoving -= TokenItemRemoved; _ttb.TextChanged -= TextChanged; _ttb.TokenItemAdding -= TokenItemCreating; } if (control.FindChild("TokenBox") is TokenizingTextBox ttb) { _ttb = ttb; _ttb.TokenItemAdded += TokenItemAdded; _ttb.TokenItemRemoving += TokenItemRemoved; _ttb.TextChanged += TextChanged; _ttb.TokenItemAdding += TokenItemCreating; _acv.Filter = item => !_ttb.Items.Contains(item) && (item as SampleDataType).Text.Contains(_ttb.Text, System.StringComparison.CurrentCultureIgnoreCase); _ttb.SuggestedItemsSource = _acv; } // For the Email Selection control if (_ttbEmail != null) { _ttbEmail.ItemClick -= EmailTokenItemClick; _ttbEmail.TokenItemAdding -= EmailTokenItemAdding; _ttbEmail.TokenItemAdded -= EmailTokenItemAdded; _ttbEmail.TokenItemRemoved -= EmailTokenItemRemoved; _ttbEmail.TextChanged -= EmailTextChanged; _ttbEmail.PreviewKeyDown -= EmailPreviewKeyDown; } if (control.FindChild("TokenBoxEmail") is TokenizingTextBox ttbEmail) { _ttbEmail = ttbEmail; _ttbEmail.ItemClick += EmailTokenItemClick; _ttbEmail.TokenItemAdding += EmailTokenItemAdding; _ttbEmail.TokenItemAdded += EmailTokenItemAdded; _ttbEmail.TokenItemRemoved += EmailTokenItemRemoved; _ttbEmail.TextChanged += EmailTextChanged; _ttbEmail.PreviewKeyDown += EmailPreviewKeyDown; _acvEmail.Filter = item => !_ttbEmail.Items.Contains(item) && (item as SampleEmailDataType).DisplayName.Contains(_ttbEmail.Text, System.StringComparison.CurrentCultureIgnoreCase); } if (_ttbEmailSuggestions != null) { _ttbEmailSuggestions.ItemClick -= EmailList_ItemClick; _ttbEmailSuggestions.PreviewKeyDown -= EmailList_PreviewKeyDown; } if (control.FindChild("EmailList") is ListView ttbList) { _ttbEmailSuggestions = ttbList; _ttbEmailSuggestions.ItemClick += EmailList_ItemClick; _ttbEmailSuggestions.PreviewKeyDown += EmailList_PreviewKeyDown; _ttbEmailSuggestions.ItemsSource = _acvEmail; } }
public void OnXamlRendered(FrameworkElement control) { _selectedEmails = new ObservableCollection <SampleEmailDataType>(); if (_ttb != null) { _ttb.TokenItemAdded -= TokenItemAdded; _ttb.TokenItemRemoving -= TokenItemRemoved; _ttb.TextChanged -= TextChanged; _ttb.TokenItemAdding -= TokenItemCreating; } if (control.FindChildByName("TokenBox") is TokenizingTextBox ttb) { _ttb = ttb; _ttb.TokenItemAdded += TokenItemAdded; _ttb.TokenItemRemoving += TokenItemRemoved; _ttb.TextChanged += TextChanged; _ttb.TokenItemAdding += TokenItemCreating; _acv.Filter = item => !_ttb.Items.Contains(item) && (item as SampleDataType).Text.Contains(_ttb.Text, System.StringComparison.CurrentCultureIgnoreCase); _ttb.SuggestedItemsSource = _acv; } // For the Email Selection control if (_ttbEmail != null) { _ttbEmail.ItemClick -= EmailTokenItemClick; _ttbEmail.TokenItemAdding -= EmailTokenItemAdding; _ttbEmail.TokenItemAdded -= EmailTokenItemAdded; _ttbEmail.TokenItemRemoved -= EmailTokenItemRemoved; _ttbEmail.TextChanged -= EmailTextChanged; _ttbEmail.PreviewKeyDown -= EmailPreviewKeyDown; } if (control.FindChildByName("TokenBoxEmail") is TokenizingTextBox ttbEmail) { _ttbEmail = ttbEmail; _ttbEmail.ItemsSource = _selectedEmails; _ttbEmail.ItemClick += EmailTokenItemClick; _ttbEmail.TokenItemAdding += EmailTokenItemAdding; _ttbEmail.TokenItemAdded += EmailTokenItemAdded; _ttbEmail.TokenItemRemoved += EmailTokenItemRemoved; _ttbEmail.TextChanged += EmailTextChanged; _ttbEmail.PreviewKeyDown += EmailPreviewKeyDown; _acvEmail.Filter = item => !_ttbEmail.Items.Contains(item) && (item as SampleEmailDataType).DisplayName.Contains(_ttbEmail.Text, System.StringComparison.CurrentCultureIgnoreCase); } if (_ttbEmailSuggestions != null) { _ttbEmailSuggestions.ItemClick -= EmailList_ItemClick; _ttbEmailSuggestions.PreviewKeyDown -= EmailList_PreviewKeyDown; } if (control.FindChildByName("EmailList") is ListView ttbList) { _ttbEmailSuggestions = ttbList; _ttbEmailSuggestions.ItemClick += EmailList_ItemClick; _ttbEmailSuggestions.PreviewKeyDown += EmailList_PreviewKeyDown; _ttbEmailSuggestions.ItemsSource = _acvEmail; } if (_ttbEmailClear != null) { _ttbEmailClear.Click -= ClearButtonClick; } if (control.FindChildByName("ClearButton") is Button btn) { _ttbEmailClear = btn; _ttbEmailClear.Click += ClearButtonClick; } if (_ttbEmailShowItems != null) { _ttbEmailShowItems.Click -= ShowButtonClick; } if (control.FindChildByName("ShowSelectedEmails") is Button showBtn) { _ttbEmailShowItems = showBtn; _ttbEmailShowItems.Click += ShowButtonClick; } }