ChatView | Markdown & Input Bar
ChatView’s input bar can show a markdown composition toolbar and render a markdown subset in bubbles — all self-contained, with no dependency on the *.Controls.Markdown add-on package.
The Composition Toolbar
Section titled “The Composition Toolbar”The toolbar is gated by ChatSessionInfo.BodyPermissions. A button appears only for a granted flag; MessageBodyPermissions.None shows a plain-text input with no toolbar.
[Flags]public enum MessageBodyPermissions{ None = 0, Links = 1, Bold = 2, Italics = 4, Underline = 8, Strikethrough = 16, Codeblocks = 32, All = Links | Bold | Italics | Underline | Strikethrough | Codeblocks}public ChatSessionInfo BuildInfo() => new( /* ... */ BodyPermissions: MessageBodyPermissions.Bold | MessageBodyPermissions.Italics | MessageBodyPermissions.Links, /* ... */);| Flag | Button | Wraps selection with |
|---|---|---|
Bold | B | **bold** |
Italics | I | *italic* |
Underline | U | underline markers |
Strikethrough | S | ~~strike~~ |
Codeblocks | </> | `code` |
Links | 🔗 | prompts for URL + text → [text](url) |
Each button wraps the current selection with the matching delimiter, or inserts a placeholder when nothing is selected. The Link button prompts for a URL and display text. The outgoing Body is markdown.
Inline Rendering in Bubbles
Section titled “Inline Rendering in Bubbles”The bubble renderer honors the same subset for display — **bold**, *italic*, ~~strike~~, `code`, underline, and [text](url) (plus auto-linking of bare URLs). This is a self-contained minimal renderer built into the control; it is intentionally lighter than the full MarkdownView. If you need rich/extended markdown in bubbles, use a custom message template and render it yourself.
Input Bar Properties
Section titled “Input Bar Properties”| Property | Type | Default | Description |
|---|---|---|---|
IsInputBarVisible | bool | true | Show/hide the input bar — set false for read-only chats |
PlaceholderText | string | "Type a message..." | Input placeholder |
SendButtonText | string | "Send" | Send button label |
SendButtonBackgroundColor | Color/string | #007AFF | Send button background (MAUI) |
SendButtonTextColor | Color/string | White | Send button text (MAUI) |
InputBarBackgroundColor | Color/string | #F5F5F5 | Input bar background (MAUI) |
InputBarBorderColor | Color/string | #E0E0E0 | Input bar separator (MAUI) |
AdjustForKeyboard | bool | true | iOS keyboard padding — set false when hosting inside a FloatingPanel (MAUI) |
<shiny:ChatView Provider="{Binding Provider}" SessionId="{Binding SessionId}" PlaceholderText="Message the team…" SendButtonText="Go" SendButtonBackgroundColor="#34C759" InputBarBackgroundColor="#FAFAFA" InputBarBorderColor="#CCCCCC" />The input bar is enabled by CanSendMessages and disabled automatically while the connection is not Connected (see Typing & Connection). The send itself is optimistic — see Messages & Paging.
Programmatic input (MAUI)
Section titled “Programmatic input (MAUI)”| Member | Description |
|---|---|
EntryText (property) | Get/set the input field text |
SubmitEntry() | Programmatically submit the current input |
These are handy for custom input actions such as inserting a snippet or backfilling speech-to-text.
Read-Only / No Toolbar
Section titled “Read-Only / No Toolbar”<!-- read-only feed: no input bar at all --><shiny:ChatView Provider="{Binding Provider}" SessionId="{Binding SessionId}" IsInputBarVisible="False" />For a plain-text composer (input bar shown, no formatting buttons), return BodyPermissions: MessageBodyPermissions.None from your session’s Info.
Next Steps
Section titled “Next Steps”- Images & Attachments — the attach affordance and ImageViewer
- Custom Actions — add input-bar actions like speech-to-text
- Permissions —
MessageBodyPermissionsandCanSendMessages