Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

New method to add token to RichSuggestBox

Đang mở
#710 2 bình luận 2 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
45/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
csharp
Lĩnh vực
desktop

Hướng nghiên cứu

Bắt đầu từ RichSuggestBox và lần theo đường dẫn AddTokens hiện có, bao gồm cách lựa chọn văn bản và dữ liệu token được cập nhật. Xác định hành vi của phương thức mới dựa trên hành vi mong đợi: phương thức này phải chèn một token được hiển thị cùng dữ liệu liên kết tại lựa chọn hiện tại, với token thu được có thể được truy cập thông qua trạng thái token hiện có của control.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
C#
Star
1.1k
Fork
167
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của CommunityToolkit/Windows

Tất cả issue của CommunityToolkit/Windows

Issue tương tự

Thêm issue về C#

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.