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? |
theme | Outline of the rounded composer (MAUI) |
AdjustForKeyboard |
bool |
true |
iOS keyboard padding — leave it on inside a FloatingPanel; at the panel’s top detent it is the only thing lifting the composer clear of the keyboard (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.
The input bar itself is a standalone control (ChatEntryView / ChatEntry) that ChatView hosts for you — see The Composer for its own properties, how to replace it, and how to use it outside a chat.
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


