Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

New method to add token to RichSuggestBox

Aperta
#710 2 commenti 2 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
csharp
Ambito
desktop

Direzione di ricerca

Inizia da RichSuggestBox e segui il percorso AddTokens esistente, incluso il modo in cui vengono aggiornati la selezione del testo e i dati del token. Definisci il comportamento del nuovo metodo in base al comportamento previsto: deve inserire un token visualizzato con i dati associati nella selezione corrente, rendendo il token risultante disponibile tramite lo stato dei token esistente del controllo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

components::controls::richsuggestbox enhancement feature request :mailbox_with_mail:
Describe the bug

As mentioned on Discord, I would really love a new method on RichSuggestBox that allows the programmatic insertion of a new token.

The use-case for this is something like a toolbar that offers ways to insert tokens. Currently you need to type the prefix, and then use the provided suggestions.

I think it is quite a common case that you want to offer suggestions outside of the provided popup. In the sample people get suggested to at-mention when the user types @. But imagine if I want to have a custom menu that enables the user to at-mention the last couple of people they interacted with. This new method would make that quite easy to implement.

Steps to reproduce

Currently I create the token in a manual way that relies a bit too much on the inner workings of RichSuggestBox:

    private void AddToken(string displayText, object? tokenData)
    {
        var guid = Guid.NewGuid();
        if (mySuggestBox.TextDocument is not null)
        {
            mySuggestBox.AddTokens([new(guid, $"({displayText})") { Item = tokenData }]);

            mySuggestBox.TextDocument.Selection.SetText(Microsoft.UI.Text.TextSetOptions.Unhide, $"\u200B({displayText})\u200B");
            mySuggestBox.TextDocument.Selection.Link = $"\"{guid}\"";
            // I move the focus, but probably not needed in the toolkit:
            mySuggestBox.Focus(FocusState.Programmatic);
            mySuggestBox.TextDocument.Selection.MoveStart(Microsoft.UI.Text.TextRangeUnit.Story, 1);
            // note: the new Token is not available in `Tokens` here yet, some processing occurs.
            // It seems like the private method `ValidateTokensInDocument()` should be called here.
        }
    }
Expected behavior

The new method should add a token, allow me to set the displayed text and the associated data. The token should be inserted at the current text selection/position (In my experience the current position is at the end of the document if the user hasn't interacted with the content)

Screenshots

See the discord for a video of my current use-case

Code Platform
  • UWP
  • WinAppSDK / WinUI 3
  • Web Assembly (WASM)
  • Android
  • iOS
  • MacOS
  • Linux / GTK
Windows Build Number
  • Windows 10 1809 (Build 17763)
  • Windows 10 1903 (Build 18362)
  • Windows 10 1909 (Build 18363)
  • Windows 10 2004 (Build 19041)
  • Windows 10 20H2 (Build 19042)
  • Windows 10 21H1 (Build 19043)
  • Windows 10 21H2 (Build 19044)
  • Windows 10 22H2 (Build 19045)
  • Windows 11 21H2 (Build 22000)
  • Other (specify)
Other Windows Build number

No response

App minimum and target SDK version
  • Windows 10, version 1809 (Build 17763)
  • Windows 10, version 1903 (Build 18362)
  • Windows 10, version 1909 (Build 18363)
  • Windows 10, version 2004 (Build 19041)
  • Windows 10, version 2104 (Build 20348)
  • Windows 11, version 22H2 (Build 22000)
  • Other (specify)
Other SDK version

No response

Visual Studio Version

2022

Visual Studio Build Number

latest (17.14.9)

Device form factor

Desktop

Additional context

I find the tokenized richtextbox a very cool and powerful control, the use-case in the samples centered on suggestions are just the tip of the ice berg.
I did not really look into this yet, but I believe a token must currently start with a punctuation character. But wouldn't it be neat if you could use an emoji? Imagine a paperclip with a document name to reference an attachment. 📎MyReport.pdf

Help us help you

No, I'm unable to contribute a solution.

Lingua principale
C#
Stelle
1.1k
Fork
167
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di CommunityToolkit/Windows

Tutte le issue di CommunityToolkit/Windows

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.