Skip to content
Shiny Controls v1.0 - The Ultra Control Suite for .NET MAUI & BlazorO...M...G!

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 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.

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.

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.

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 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.