From 458350e9831dd35cb621209c9d1b3d876898e9a4 Mon Sep 17 00:00:00 2001 From: Tung Huynh <31434093+huynhsontung@users.noreply.github.com> Date: Sat, 21 Aug 2021 09:08:34 +0000 Subject: [PATCH 1/9] basic documentation for RichSuggestBox --- docs/controls/RichSuggestBox.md | 121 ++++++++++++++++++ .../images/Controls/RichSuggestBox.gif | Bin 0 -> 67738 bytes 2 files changed, 121 insertions(+) create mode 100644 docs/controls/RichSuggestBox.md create mode 100644 docs/resources/images/Controls/RichSuggestBox.gif diff --git a/docs/controls/RichSuggestBox.md b/docs/controls/RichSuggestBox.md new file mode 100644 index 000000000..bb0cf0762 --- /dev/null +++ b/docs/controls/RichSuggestBox.md @@ -0,0 +1,121 @@ +--- +title: RichSuggestBox +author: huynhsontung +description: A rich text input control that auto-suggests and stores token items in a document. +keywords: windows 10, uwp, windows community toolkit, uwp community toolkit, uwp toolkit, RichSuggestBox +dev_langs: + - csharp +--- + +# RichSuggestBox + +The [RichSuggestBox](/dotnet/api/microsoft.toolkit.uwp.ui.controls.richsuggestbox) is a combination of AutoSuggestBox and RichEditBox which provides suggestions when the user types certain customizable prefixes and stores suggested items as tokens in the document. + +RichSuggestBox can operate in Rich Text Format (RTF) mode or plain-text mode. In RTF mode, the user can insert rich text documents that contain formatted text, hyperlinks, and images. In plain-text mode, the user can only insert plain-text as the only formatted texts in the document are tokens. + +RichSuggestBox is inspired by text controls commonly found in social applications where you type "@" and the control starts suggesting different people to be included in the text box. + + + + + + +> **Platform APIs:** [`RichSuggestBox`](/dotnet/api/microsoft.toolkit.uwp.ui.controls.richsuggestbox) + +> [!div class="nextstepaction"] +> [Try it in the sample app](uwpct://Controls?sample=RichSuggestBox) + +## Syntax + +```xaml + +``` + +## Example Output + +![RichSuggestBox Example](../resources/images/Controls/RichSuggestBox.gif) + +## Properties + +| Property | Type | Description | +| -- | -- | -- | +| ClipboardCopyFormat | RichEditClipboardFormat | Gets or sets a value that specifies whether text is copied with all formats, or as plain text only. | +| ClipboardPasteFormat | RichEditClipboardFormat | Gets or sets a value that specifies whether pasted text preserves all formats, or as plain text only. | +| Description | object | Gets or sets content that is shown below the control. The content should provide guidance about the input expected by the control. | +| DisabledFormattingAccelerators | DisabledFormattingAccelerators | Gets or sets a value that indicates which keyboard shortcuts for formatting are disabled. | +| Header | object | Gets or sets the content for the control's header. | +| HeaderTemplate | DataTemplate | Gets or sets the `DataTemplate` used to display the content of the control's header. | +| HorizontalOffset | double | Gets the distance the content has been scrolled horizontally from the underlying `ScrollViewer`. | +| PlaceholderText | string | Gets or sets the text that is displayed in the control until the value is changed by a user action or some other operation. | +| PopupCornerRadius | CornerRadius | Gets or sets the radius for the corners of the popup control's border. | +| PopupFooter | object | Gets or sets the content for the suggestion popup control's footer. | +| PopupFooterTemplate | DataTemplate | Gets or sets the `DataTemplate` used to display the content of the suggestion popup control's footer. | +| PopupHeader | object | Gets or sets the content for the suggestion popup control's header. | +| PopupHeaderTemplate | DataTemplate | Gets or sets the `DataTemplate` used to display the content of the suggestion popup control's header. | +| PopupPlacement | SuggestionPopupPlacementMode | Gets or sets suggestion popup placement to either `Floating` or `Attached` to the text box. | +| Prefixes | string | Gets or sets prefix characters to start a query.
Prefix characters must be punctuations (must satisfy [IsPunctuation(Char)](https://docs.microsoft.com/en-us/dotnet/api/system.char.ispunctuation) method). | +| RichEditBoxStyle | Style | Gets or sets the style of the underlying `RichEditBox`. | +| TextDocument | RichEditTextDocument | Gets an object that enables access to the text object model for the text contained in a `RichEditBox`. | +| TokenBackground | SolidColorBrush | Gets or sets the default brush used to color the suggestion token background. | +| TokenForeground | SolidColorBrush | Gets or sets the default brush used to color the suggestion token foreground. | +| Tokens | ReadOnlyObservableCollection\ | Gets a collection of suggestion tokens that are present in the document. | +| VerticalOffset | double | Gets the distance the content has been scrolled vertically from the underlying `ScrollViewer`. | + +## Methods + +| Methods | Return Type | Description | +| -- | -- | -- | +| AddTokens(IEnumerable\) | void | Add tokens to be tracked against the document. Duplicate tokens will not be updated. | +| Clear() | void | Clear the document and token list. This will also clear the undo/redo history. | +| ClearUndoRedoSuggestionHistory() | void | Clear unused tokens and undo/redo history. | +| GetRectFromRange(ITextRange) | Rect | Retrieves the bounding rectangle that encompasses the text range with position measured from the top left of the `RichSuggestBox` control. | +| Load(string, IEnumerable\) | void | Populate the `RichSuggestBox` with an existing Rich Text Format (RTF) document and a collection of tokens.
This method replaces the current document and token list. | +| TryGetTokenFromRange(ITextRange, out RichSuggestToken) | bool | Try getting the token associated with a text range. | + +## Events + +| Events | Description | +| -- | -- | +| Paste | Event raised when text is pasted into the control. | +| SelectionChanged | Event raised when the text selection has changed. | +| SuggestionChosen | Event raised when user click on a suggestion.
This event lets you customize the token appearance in the document. | +| SuggestionRequested | Event raised when the control needs to show suggestions. | +| TextChanged | Event raised when text is changed, either by user or by internal formatting. | +| TokenPointerOver | Event raised when a pointer is hovering over a token. | +| TokenSelected | Event raised when a token is fully highlighted. | + + +## Sample Project + +[RichSuggestBox sample page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/RichSuggestBox). You can [see this in action](uwpct://Controls?sample=RichSuggestBox) in [Windows Community Toolkit Sample App](https://aka.ms/windowstoolkitapp). + +## Requirements + +| Device family | Universal, 10.0.17763.0 or higher | +| -- | -- | +| Namespace | Microsoft.Toolkit.Uwp.UI.Controls | +| NuGet package | [Microsoft.Toolkit.Uwp.UI.Controls](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp.UI.Controls/) | + +## Source Code + +- [RichSuggestBox source code](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.UI.Controls.Input/RichSuggestBox) + +## Related Topics + +- [AutoSuggestBox](https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.autosuggestbox) +- [RichEditBox](https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.richeditbox) +- [TokenizingTextBox](TokenizingTextBox.md) \ No newline at end of file diff --git a/docs/resources/images/Controls/RichSuggestBox.gif b/docs/resources/images/Controls/RichSuggestBox.gif new file mode 100644 index 0000000000000000000000000000000000000000..853476a32a63a1580c4f29a243ce058a5f8b8127 GIT binary patch literal 67738 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 cG)Kf`vZw2Kd#ci~)a1$cV3{@u@n2W@A2GwS8vp Date: Sat, 21 Aug 2021 09:17:53 +0000 Subject: [PATCH 2/9] remove hard-coded locale --- docs/controls/RichSuggestBox.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/controls/RichSuggestBox.md b/docs/controls/RichSuggestBox.md index bb0cf0762..ad8406cab 100644 --- a/docs/controls/RichSuggestBox.md +++ b/docs/controls/RichSuggestBox.md @@ -67,7 +67,7 @@ with the namespace and the class name. Without any country/region 'en-us' identi | PopupHeader | object | Gets or sets the content for the suggestion popup control's header. | | PopupHeaderTemplate | DataTemplate | Gets or sets the `DataTemplate` used to display the content of the suggestion popup control's header. | | PopupPlacement | SuggestionPopupPlacementMode | Gets or sets suggestion popup placement to either `Floating` or `Attached` to the text box. | -| Prefixes | string | Gets or sets prefix characters to start a query.
Prefix characters must be punctuations (must satisfy [IsPunctuation(Char)](https://docs.microsoft.com/en-us/dotnet/api/system.char.ispunctuation) method). | +| Prefixes | string | Gets or sets prefix characters to start a query.
Prefix characters must be punctuations (must satisfy [IsPunctuation(Char)](https://docs.microsoft.com/dotnet/api/system.char.ispunctuation) method). | | RichEditBoxStyle | Style | Gets or sets the style of the underlying `RichEditBox`. | | TextDocument | RichEditTextDocument | Gets an object that enables access to the text object model for the text contained in a `RichEditBox`. | | TokenBackground | SolidColorBrush | Gets or sets the default brush used to color the suggestion token background. | @@ -116,6 +116,6 @@ with the namespace and the class name. Without any country/region 'en-us' identi ## Related Topics -- [AutoSuggestBox](https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.autosuggestbox) -- [RichEditBox](https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.richeditbox) +- [AutoSuggestBox](https://docs.microsoft.com/uwp/api/windows.ui.xaml.controls.autosuggestbox) +- [RichEditBox](https://docs.microsoft.com/uwp/api/windows.ui.xaml.controls.richeditbox) - [TokenizingTextBox](TokenizingTextBox.md) \ No newline at end of file From 50e615f6579331d7ee59c11c5ba69136036a6de6 Mon Sep 17 00:00:00 2001 From: Tung Huynh <31434093+huynhsontung@users.noreply.github.com> Date: Sat, 21 Aug 2021 09:20:10 +0000 Subject: [PATCH 3/9] remove absolute links --- docs/controls/RichSuggestBox.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/controls/RichSuggestBox.md b/docs/controls/RichSuggestBox.md index ad8406cab..e8949ec7a 100644 --- a/docs/controls/RichSuggestBox.md +++ b/docs/controls/RichSuggestBox.md @@ -67,7 +67,7 @@ with the namespace and the class name. Without any country/region 'en-us' identi | PopupHeader | object | Gets or sets the content for the suggestion popup control's header. | | PopupHeaderTemplate | DataTemplate | Gets or sets the `DataTemplate` used to display the content of the suggestion popup control's header. | | PopupPlacement | SuggestionPopupPlacementMode | Gets or sets suggestion popup placement to either `Floating` or `Attached` to the text box. | -| Prefixes | string | Gets or sets prefix characters to start a query.
Prefix characters must be punctuations (must satisfy [IsPunctuation(Char)](https://docs.microsoft.com/dotnet/api/system.char.ispunctuation) method). | +| Prefixes | string | Gets or sets prefix characters to start a query.
Prefix characters must be punctuations (must satisfy [IsPunctuation(Char)](/dotnet/api/system.char.ispunctuation) method). | | RichEditBoxStyle | Style | Gets or sets the style of the underlying `RichEditBox`. | | TextDocument | RichEditTextDocument | Gets an object that enables access to the text object model for the text contained in a `RichEditBox`. | | TokenBackground | SolidColorBrush | Gets or sets the default brush used to color the suggestion token background. | @@ -116,6 +116,6 @@ with the namespace and the class name. Without any country/region 'en-us' identi ## Related Topics -- [AutoSuggestBox](https://docs.microsoft.com/uwp/api/windows.ui.xaml.controls.autosuggestbox) -- [RichEditBox](https://docs.microsoft.com/uwp/api/windows.ui.xaml.controls.richeditbox) +- [AutoSuggestBox](/uwp/api/windows.ui.xaml.controls.autosuggestbox) +- [RichEditBox](/uwp/api/windows.ui.xaml.controls.richeditbox) - [TokenizingTextBox](TokenizingTextBox.md) \ No newline at end of file From f36c5d90ab899def37083a9e73f059e980d83a4f Mon Sep 17 00:00:00 2001 From: Tung Huynh <31434093+huynhsontung@users.noreply.github.com> Date: Sun, 22 Aug 2021 21:09:46 +0000 Subject: [PATCH 4/9] simplify description, add remarks and examples --- docs/controls/RichSuggestBox.md | 73 ++++++++++++++++++++++++++++++--- 1 file changed, 68 insertions(+), 5 deletions(-) diff --git a/docs/controls/RichSuggestBox.md b/docs/controls/RichSuggestBox.md index e8949ec7a..082fc465a 100644 --- a/docs/controls/RichSuggestBox.md +++ b/docs/controls/RichSuggestBox.md @@ -9,11 +9,9 @@ dev_langs: # RichSuggestBox -The [RichSuggestBox](/dotnet/api/microsoft.toolkit.uwp.ui.controls.richsuggestbox) is a combination of AutoSuggestBox and RichEditBox which provides suggestions when the user types certain customizable prefixes and stores suggested items as tokens in the document. +The [RichSuggestBox](/dotnet/api/microsoft.toolkit.uwp.ui.controls.richsuggestbox) is a combination of [AutoSuggestBox](/uwp/api/windows.ui.xaml.controls.autosuggestbox) and [RichEditBox](/uwp/api/windows.ui.xaml.controls.richeditbox) that can provide suggestions based on customizable prefixes. Selected suggestions are then embedded and tracked in the document as tokens. -RichSuggestBox can operate in Rich Text Format (RTF) mode or plain-text mode. In RTF mode, the user can insert rich text documents that contain formatted text, hyperlinks, and images. In plain-text mode, the user can only insert plain-text as the only formatted texts in the document are tokens. - -RichSuggestBox is inspired by text controls commonly found in social applications where you type "@" and the control starts suggesting different people to be included in the text box. +RichSuggestBox resembles text controls commonly found in social applications where you type "@" to mention people. @@ -41,7 +39,7 @@ with the namespace and the class name. Without any country/region 'en-us' identi ```xaml ``` @@ -49,6 +47,23 @@ with the namespace and the class name. Without any country/region 'en-us' identi ![RichSuggestBox Example](../resources/images/Controls/RichSuggestBox.gif) +## Remarks + +When a suggestion is selected, `RichSuggestBox` assigns the selected item a unique [Guid](/dotnet/api/system.guid) and a display text (provided by the developer) to make up a token. The display text is then padded with [Zero Width Space](https://unicode-table.com/200B/)s (ZWSP) and inserted into the document as a hyperlink using the identifier as the link address. These hyperlinks are tracked and validated on every text change. + +The token text inserted into the document has the following layout: ZWSP - Prefix character - Display text - ZWSP. + +For example, a token with "@" as the prefix and "John Doe" as the display text is inserted as: +```cs +"\u200b@John Doe\u200b" +``` + +> [!IMPORTANT] +> Token text contains [Zero Width Space](https://unicode-table.com/200B/)s, which are Unicode characters. + +> [!NOTE] +> To support Undo/Redo function, `RichSuggestBox` keeps all the tokens in an internal collection even when the token text is deleted from the document. These token are marked as inactive and are not included in the `Tokens` collection. Use `ClearUndoRedoSuggestionHistory()` method to clear inactive tokens or `Clear()` method to clear all tokens. + ## Properties | Property | Type | Description | @@ -98,6 +113,54 @@ with the namespace and the class name. Without any country/region 'en-us' identi | TokenPointerOver | Event raised when a pointer is hovering over a token. | | TokenSelected | Event raised when a token is fully highlighted. | +## Examples + +### Handle multiple token types + +The example below creates a `RichSuggestBox` that can tokenize both mentions (query starts with `@`) and hashtags (query starts with `#`). + +```xaml + +``` + +```cs +private void OnSuggestionChosen(RichSuggestBox sender, SuggestionChosenEventArgs args) +{ + if (args.Prefix == "#") + { + // User selected a hashtag item + args.DisplayText = ((SampleHashtagDataType)args.SelectedItem).Text; + } + else + { + // User selected a mention item + args.DisplayText = ((SampleEmailDataType)args.SelectedItem).DisplayName; + } +} + +private void OnSuggestionRequested(RichSuggestBox sender, SuggestionRequestedEventArgs args) +{ + sender.ItemsSource = args.Prefix == "#" + ? _hashtags.Where(x => x.Text.Contains(args.QueryText, StringComparison.OrdinalIgnoreCase)) + : _emails.Where(x => x.DisplayName.Contains(args.QueryText, StringComparison.OrdinalIgnoreCase)); +} +``` + +### Plain text only + +The example below creates a `RichSuggestBox` that only allows users to enter plain text. The only formatted texts in the document are tokens. + +```xaml + +``` ## Sample Project From 606e4af46ad460672759396e7f2c7ede847469e5 Mon Sep 17 00:00:00 2001 From: Tung Huynh <31434093+huynhsontung@users.noreply.github.com> Date: Sun, 22 Aug 2021 21:52:54 +0000 Subject: [PATCH 5/9] remove comments + minor fixes --- docs/controls/RichSuggestBox.md | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/docs/controls/RichSuggestBox.md b/docs/controls/RichSuggestBox.md index 082fc465a..6687ffe60 100644 --- a/docs/controls/RichSuggestBox.md +++ b/docs/controls/RichSuggestBox.md @@ -9,25 +9,9 @@ dev_langs: # RichSuggestBox -The [RichSuggestBox](/dotnet/api/microsoft.toolkit.uwp.ui.controls.richsuggestbox) is a combination of [AutoSuggestBox](/uwp/api/windows.ui.xaml.controls.autosuggestbox) and [RichEditBox](/uwp/api/windows.ui.xaml.controls.richeditbox) that can provide suggestions based on customizable prefixes. Selected suggestions are then embedded and tracked in the document as tokens. +The [RichSuggestBox](/dotnet/api/microsoft.toolkit.uwp.ui.controls.richsuggestbox) is a combination of [AutoSuggestBox](/uwp/api/windows.ui.xaml.controls.autosuggestbox) and [RichEditBox](/uwp/api/windows.ui.xaml.controls.richeditbox) that can provide suggestions based on customizable prefixes. Selected suggestions are embedded and tracked in the document as tokens. RichSuggestBox resembles text controls commonly found in social applications where you type "@" to mention people. - - - - - > **Platform APIs:** [`RichSuggestBox`](/dotnet/api/microsoft.toolkit.uwp.ui.controls.richsuggestbox) From a86e7d63375334ef84251a33f482109cebc1383c Mon Sep 17 00:00:00 2001 From: Tung Huynh <31434093+huynhsontung@users.noreply.github.com> Date: Sun, 22 Aug 2021 21:58:49 +0000 Subject: [PATCH 6/9] add entry to toc --- docs/toc.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/toc.md b/docs/toc.md index 2667b87e2..46bc7a36a 100644 --- a/docs/toc.md +++ b/docs/toc.md @@ -167,6 +167,8 @@ ### [RemoteDevicePicker](controls/RemoteDevicePicker.md) +### [RichSuggestBox](controls/RichSuggestBox.md) + ### [RotatorTile](controls/RotatorTile.md) ### [StaggeredLayout](controls/layout/StaggeredLayout.md) From 2031e70eab7d05c6faf2cae9a757550d3481770b Mon Sep 17 00:00:00 2001 From: Tung Huynh <31434093+huynhsontung@users.noreply.github.com> Date: Mon, 23 Aug 2021 00:24:27 -0700 Subject: [PATCH 7/9] remove Properties, Methods, and Events sections Co-authored-by: Michael Hawker MSFT (XAML Llama) <24302614+michael-hawker@users.noreply.github.com> --- docs/controls/RichSuggestBox.md | 48 --------------------------------- 1 file changed, 48 deletions(-) diff --git a/docs/controls/RichSuggestBox.md b/docs/controls/RichSuggestBox.md index 6687ffe60..07abeeb50 100644 --- a/docs/controls/RichSuggestBox.md +++ b/docs/controls/RichSuggestBox.md @@ -48,54 +48,6 @@ For example, a token with "@" as the prefix and "John Doe" as the display text i > [!NOTE] > To support Undo/Redo function, `RichSuggestBox` keeps all the tokens in an internal collection even when the token text is deleted from the document. These token are marked as inactive and are not included in the `Tokens` collection. Use `ClearUndoRedoSuggestionHistory()` method to clear inactive tokens or `Clear()` method to clear all tokens. -## Properties - -| Property | Type | Description | -| -- | -- | -- | -| ClipboardCopyFormat | RichEditClipboardFormat | Gets or sets a value that specifies whether text is copied with all formats, or as plain text only. | -| ClipboardPasteFormat | RichEditClipboardFormat | Gets or sets a value that specifies whether pasted text preserves all formats, or as plain text only. | -| Description | object | Gets or sets content that is shown below the control. The content should provide guidance about the input expected by the control. | -| DisabledFormattingAccelerators | DisabledFormattingAccelerators | Gets or sets a value that indicates which keyboard shortcuts for formatting are disabled. | -| Header | object | Gets or sets the content for the control's header. | -| HeaderTemplate | DataTemplate | Gets or sets the `DataTemplate` used to display the content of the control's header. | -| HorizontalOffset | double | Gets the distance the content has been scrolled horizontally from the underlying `ScrollViewer`. | -| PlaceholderText | string | Gets or sets the text that is displayed in the control until the value is changed by a user action or some other operation. | -| PopupCornerRadius | CornerRadius | Gets or sets the radius for the corners of the popup control's border. | -| PopupFooter | object | Gets or sets the content for the suggestion popup control's footer. | -| PopupFooterTemplate | DataTemplate | Gets or sets the `DataTemplate` used to display the content of the suggestion popup control's footer. | -| PopupHeader | object | Gets or sets the content for the suggestion popup control's header. | -| PopupHeaderTemplate | DataTemplate | Gets or sets the `DataTemplate` used to display the content of the suggestion popup control's header. | -| PopupPlacement | SuggestionPopupPlacementMode | Gets or sets suggestion popup placement to either `Floating` or `Attached` to the text box. | -| Prefixes | string | Gets or sets prefix characters to start a query.
Prefix characters must be punctuations (must satisfy [IsPunctuation(Char)](/dotnet/api/system.char.ispunctuation) method). | -| RichEditBoxStyle | Style | Gets or sets the style of the underlying `RichEditBox`. | -| TextDocument | RichEditTextDocument | Gets an object that enables access to the text object model for the text contained in a `RichEditBox`. | -| TokenBackground | SolidColorBrush | Gets or sets the default brush used to color the suggestion token background. | -| TokenForeground | SolidColorBrush | Gets or sets the default brush used to color the suggestion token foreground. | -| Tokens | ReadOnlyObservableCollection\ | Gets a collection of suggestion tokens that are present in the document. | -| VerticalOffset | double | Gets the distance the content has been scrolled vertically from the underlying `ScrollViewer`. | - -## Methods - -| Methods | Return Type | Description | -| -- | -- | -- | -| AddTokens(IEnumerable\) | void | Add tokens to be tracked against the document. Duplicate tokens will not be updated. | -| Clear() | void | Clear the document and token list. This will also clear the undo/redo history. | -| ClearUndoRedoSuggestionHistory() | void | Clear unused tokens and undo/redo history. | -| GetRectFromRange(ITextRange) | Rect | Retrieves the bounding rectangle that encompasses the text range with position measured from the top left of the `RichSuggestBox` control. | -| Load(string, IEnumerable\) | void | Populate the `RichSuggestBox` with an existing Rich Text Format (RTF) document and a collection of tokens.
This method replaces the current document and token list. | -| TryGetTokenFromRange(ITextRange, out RichSuggestToken) | bool | Try getting the token associated with a text range. | - -## Events - -| Events | Description | -| -- | -- | -| Paste | Event raised when text is pasted into the control. | -| SelectionChanged | Event raised when the text selection has changed. | -| SuggestionChosen | Event raised when user click on a suggestion.
This event lets you customize the token appearance in the document. | -| SuggestionRequested | Event raised when the control needs to show suggestions. | -| TextChanged | Event raised when text is changed, either by user or by internal formatting. | -| TokenPointerOver | Event raised when a pointer is hovering over a token. | -| TokenSelected | Event raised when a token is fully highlighted. | ## Examples From 65e9865aaa1115148d57a3b64b14205e08ffacd4 Mon Sep 17 00:00:00 2001 From: Tung Huynh <31434093+huynhsontung@users.noreply.github.com> Date: Fri, 17 Sep 2021 15:26:48 -0700 Subject: [PATCH 8/9] Add blank line before code block --- docs/controls/RichSuggestBox.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/controls/RichSuggestBox.md b/docs/controls/RichSuggestBox.md index 07abeeb50..cf6475899 100644 --- a/docs/controls/RichSuggestBox.md +++ b/docs/controls/RichSuggestBox.md @@ -38,6 +38,7 @@ When a suggestion is selected, `RichSuggestBox` assigns the selected item a uniq The token text inserted into the document has the following layout: ZWSP - Prefix character - Display text - ZWSP. For example, a token with "@" as the prefix and "John Doe" as the display text is inserted as: + ```cs "\u200b@John Doe\u200b" ``` @@ -117,4 +118,4 @@ The example below creates a `RichSuggestBox` that only allows users to enter pla - [AutoSuggestBox](/uwp/api/windows.ui.xaml.controls.autosuggestbox) - [RichEditBox](/uwp/api/windows.ui.xaml.controls.richeditbox) -- [TokenizingTextBox](TokenizingTextBox.md) \ No newline at end of file +- [TokenizingTextBox](TokenizingTextBox.md) From 133f8f6dfa6d20a8c19e3a156f20df8877d04916 Mon Sep 17 00:00:00 2001 From: Tung Huynh <31434093+huynhsontung@users.noreply.github.com> Date: Mon, 20 Sep 2021 10:54:33 -0700 Subject: [PATCH 9/9] remove extra blank line on line 52 --- docs/controls/RichSuggestBox.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/controls/RichSuggestBox.md b/docs/controls/RichSuggestBox.md index cf6475899..cdc0a8754 100644 --- a/docs/controls/RichSuggestBox.md +++ b/docs/controls/RichSuggestBox.md @@ -49,7 +49,6 @@ For example, a token with "@" as the prefix and "John Doe" as the display text i > [!NOTE] > To support Undo/Redo function, `RichSuggestBox` keeps all the tokens in an internal collection even when the token text is deleted from the document. These token are marked as inactive and are not included in the `Tokens` collection. Use `ClearUndoRedoSuggestionHistory()` method to clear inactive tokens or `Clear()` method to clear all tokens. - ## Examples ### Handle multiple token types