New method to add token to RichSuggestBox
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
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
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
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di CommunityToolkit/Windows
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
CommunityToolkit/Windows#869 · 2 commenti ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
CommunityToolkit/Windows#867 · 4 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
CommunityToolkit/Windows#863 · 11 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 62/100
CommunityToolkit/Windows#860 · 2 commenti ·
-
[SettingsCard] Change ActionIcon to utilize IconSource and IconSourceElementForse di nuovo libera @Avid29 l’ha presa 123 giorni fa e non c’è nessuna pull request aperta. Apertacomponents::controls::settingscontrols
CommunityToolkit/Windows#858 · 4 commenti · 1 assegnatario ·
Tutte le issue di CommunityToolkit/Windows
Issue simili
-
[C#]:主页联网更新的提示投稿横幅指向错误Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
PCL-Community/PCL-CE#3652 ·
I maintainer di solito rispondono entro 1 giorno
-
area:frontend bug FE P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
klasolsson81/jobbliggaren#2010 ·
I maintainer di solito rispondono entro 1 giorno
-
[aw] Upgrade availableApertaagentic-workflows untriaged
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
area: homeblaze type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
RicoSuter/Namotion.Interceptor#630 ·
I maintainer di solito rispondono entro 1 giorno
-
Akka.Hosting enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100