ClassRadChatElement
Represents a chat element that provides comprehensive chat functionality including message display, user input handling, suggested actions management, overlay features, and extensive customization options for chat user interfaces.
Definition
Namespace:Telerik.WinControls.UI
Assembly:Telerik.WinControls.UI.dll
Syntax:
public class RadChatElement : LightVisualElement, INotifyPropertyChanged, ICustomTypeDescriptor, ISupportSystemSkin, IBindableComponent, IComponent, IDisposable, ISupportDrag, ISupportDrop, IShortcutProvider, IStylableElement, IStylableNode, IPrimitiveElement, IShapedElement, IFillElement, IBorderElement, IBoxStyle, IBoxElement, IDrawFillElement, IImageElement, ITextPrimitive, ITextProvider
Inheritance: objectDisposableObjectRadObjectRadElementVisualElementRadComponentElementRadItemUIItemBaseLightVisualElementRadChatElement
Derived Classes:
Implements:
Inherited Members
Constructors
RadChatElement()
Initializes a new instance of the RadChatElement class with default settings and event wire-up for chat functionality.
Declaration
public RadChatElement()
Properties
Author
Gets or sets the current author that represents the primary user of the chat interface, used for message attribution, alignment, styling, and automatic message creation when AutoAddUserMessages is enabled.
AutoAddUserMessages
Gets or sets a value indicating whether messages typed by the user in the input text box will automatically be added as ChatTextMessage instances to the chat conversation.
AvatarSize
Gets or sets the size of the avatar images displayed next to messages in the chat interface, controlling the visual dimensions of user profile pictures.
ChatFactory
Gets or sets the chat factory instance used for creating chat-related data items and elements, providing extensibility for custom chat component creation.
Declaration
public ChatFactory ChatFactory { get; set; }
Property Value
EditMessage
Gets the message that is currently being edited, or null if not in edit mode.
EditPreviewElement
Gets the edit preview element that is shown above the input text box when editing a message.
Declaration
public ChatEditPreviewElement EditPreviewElement { get; }
Property Value
EnableReplies
Gets or sets a value indicating whether the reply functionality is enabled. When disabled, the Reply button and context menu item are hidden and StartReply(ChatMessage) is a no-op.
InputTextBox
Gets the input text box element where users type their messages, providing text entry capabilities with support for keyboard shortcuts and clipboard operations.
Declaration
public RadTextBoxElement InputTextBox { get; }
Property Value
IsEditMode
Gets a value indicating whether the chat is currently in edit mode.
IsMoreButtonVisible
Gets or sets a value indicating whether the hosted prompt input displays its more-actions button.
IsMultiReplyMode
Gets a value indicating whether the chat is currently replying to multiple messages.
IsOverlayShown
Gets a value indicating whether an overlay is currently displayed, covering the entire chat interface for modal interactions.
Declaration
public bool IsOverlayShown { get; protected set; }
Property Value
IsPopupOverlayShown
Gets a value indicating whether a popup overlay is currently displayed, appearing above the chat interface without completely blocking the conversation view.
Declaration
public bool IsPopupOverlayShown { get; protected set; }
Property Value
IsReplyMode
Gets a value indicating whether the chat is currently in reply mode.
IsSpeechToTextButtonVisible
Gets or sets a value indicating whether the hosted prompt input displays its speech-to-text button.
Declaration
public bool IsSpeechToTextButtonVisible { get; set; }
Property Value
MaxReplyMessages
Gets or sets the maximum number of messages that can be replied to at once.
MaxVisibleAttachments
Gets or sets the maximum number of visible attachment rows shown by the hosted prompt input before its attachment area becomes scrollable.
MessagesViewElement
Gets the messages view element that contains, displays, and manages all chat messages with scrolling capabilities and message virtualization support.
Declaration
public ChatMessagesViewElement MessagesViewElement { get; }
Property Value
OverlayElement
Gets the overlay element used for displaying modal content that covers the entire chat interface for important user interactions and confirmations.
Declaration
public LightVisualElement OverlayElement { get; }
Property Value
OverlayPopupElement
Gets the overlay popup element used for displaying popup-style content that appears above the chat interface without completely blocking the underlying conversation.
Declaration
public LightVisualElement OverlayPopupElement { get; }
Property Value
PromptInputElement
Gets the prompt input element that provides comprehensive input functionality including text entry, attached files, speech-to-text, and send capabilities.
Declaration
public RadPromptInputElement PromptInputElement { get; }
Property Value
ReplyPreviewElement
Gets the reply preview element that is shown above the input text box when replying to a message.
Declaration
public ChatReplyPreviewElement ReplyPreviewElement { get; }
Property Value
ReplyToMessage
Gets the message that is currently being replied to, or null if not in reply mode. Returns the first message if replying to multiple messages.
ReplyToMessages
Gets the messages that are currently being replied to.
Declaration
public IReadOnlyList<ChatMessage> ReplyToMessages { get; }
Property Value
IReadOnlyList<ChatMessage>
SendButtonElement
Gets the send button element that enables users to submit their typed messages to the chat conversation with visual feedback and interaction support.
Declaration
public ChatSendButtonElement SendButtonElement { get; }
Property Value
ShowAvatars
Gets or sets a value indicating whether avatar images will be displayed in the chat window next to messages, providing visual identification of message authors.
ShowMessagesOnOneSide
Gets or sets a value indicating whether messages will be displayed aligned to only one side of the chat window or distributed on both sides based on the message author, affecting the overall conversation layout.
ShowToolbarButtonElement
Gets the show toolbar button element that provides toggle functionality for the chat toolbar visibility, allowing users to access extended features on demand.
Declaration
public ChatShowToolbarElement ShowToolbarButtonElement { get; }
Property Value
SuggestedActionsElement
Gets the suggested actions element that displays and manages quick action buttons for streamlined user interactions and response shortcuts.
Declaration
public ChatSuggestedActionsElement SuggestedActionsElement { get; }
Property Value
TimeSeparatorInterval
Gets or sets the time interval between messages that will trigger the automatic addition of a time separator element to visually group messages by time periods in the conversation.
Declaration
public TimeSpan TimeSeparatorInterval { get; set; }
Property Value
ToolbarElement
Gets the toolbar element that contains action buttons, controls, and extended functionality options for enhanced chat user interactions.
Declaration
public ChatToolbarElement ToolbarElement { get; }
Property Value
Methods
AddMessage(ChatMessage)
Adds a new message to the chat conversation, supporting various message types and automatically handling scrolling, suggested actions, and overlay display based on the message type.
Declaration
public virtual void AddMessage(ChatMessage message)
Parameters
message
The ChatMessage to be displayed in the chat conversation. Supported types include ChatTextMessage, ChatSuggestedActionsMessage, ChatMediaMessage, ChatCardMessage, and ChatOverlayMessage.
CancelEdit()
Cancels the current edit operation, clearing the input text box.
Declaration
public virtual void CancelEdit()
CancelReply()
Cancels the current reply operation, hiding the reply preview.
Declaration
public virtual void CancelReply()
CreateChildElements()
Creates the child elements that make up the chat interface, including the stack layout, messages view, input controls, toolbar, and overlay elements.
Declaration
protected override void CreateChildElements()
Overrides
CreateEditPreviewElement()
Creates and configures the edit preview element that is shown above the input text box when editing a message.
Declaration
protected virtual ChatEditPreviewElement CreateEditPreviewElement()
Returns
A configured ChatEditPreviewElement with initial collapsed visibility.
CreateMessagesListView()
Creates and configures the messages view element that contains and displays all chat messages with automatic sizing capabilities.
Declaration
protected virtual ChatMessagesViewElement CreateMessagesListView()
Returns
A configured ChatMessagesViewElement with proper auto-sizing and reference to the parent chat element.
CreateOverlayPopupElement()
Creates and configures the overlay popup element that displays popup-style overlays for modal interactions and user prompts.
Declaration
protected virtual OverlayPopupElement CreateOverlayPopupElement()
Returns
A configured OverlayPopupElement with initial collapsed visibility.
CreatePromptInputElement()
Creates and configures the prompt input element that provides comprehensive input functionality including text entry, attached files, speech-to-text, and send capabilities.
Declaration
protected virtual RadPromptInputElement CreatePromptInputElement()
Returns
A configured RadPromptInputElement with localized placeholder text and appropriate settings for chat input.
CreateReplyPreviewElement()
Creates and configures the reply preview element that is shown above the input text box when replying to a message.
Declaration
protected virtual ChatReplyPreviewElement CreateReplyPreviewElement()
Returns
A configured ChatReplyPreviewElement with initial collapsed visibility.
CreateShowToolbarButton()
Creates and configures the show toolbar button element that toggles the visibility of the chat toolbar containing action buttons and controls.
Declaration
protected virtual ChatShowToolbarElement CreateShowToolbarButton()
Returns
A configured ChatShowToolbarElement with appropriate font settings and ellipsis text.
CreateStackLayoutElement()
Creates and configures the main stack layout element that organizes all chat components vertically with proper sizing and orientation settings.
Declaration
protected virtual StackLayoutElement CreateStackLayoutElement()
Returns
A configured StackLayoutElement with vertical orientation and appropriate stretching properties.
CreateSuggestedActionsElement()
Creates and configures the suggested actions element that displays quick action buttons for user interaction and response shortcuts.
Declaration
protected virtual ChatSuggestedActionsElement CreateSuggestedActionsElement()
Returns
A configured ChatSuggestedActionsElement with proper sizing, visibility settings, and reference to the parent chat element.
CreateToolbarElement()
Creates and configures the toolbar element that contains action buttons and controls for extended chat functionality and user interactions.
Declaration
protected virtual ChatToolbarElement CreateToolbarElement()
Returns
A configured ChatToolbarElement with proper sizing and reference to the parent chat element.
CreateTypingIndicatorElement()
Creates and configures the typing indicator element that displays visual feedback when users or other participants are actively typing messages.
Declaration
protected virtual LightVisualElement CreateTypingIndicatorElement()
Returns
A configured LightVisualElement with typing indicator image, proper alignment settings, and initial collapsed visibility.
DeleteMessage(ChatMessage)
Deletes the specified message from the chat conversation.
Declaration
public virtual bool DeleteMessage(ChatMessage message)
Parameters
message
The ChatMessage to be removed from the chat conversation.
Returns
True if the message was found and removed; otherwise, false.
DisposeManagedResources()
Disposes managed resources and unwires event handlers to ensure proper cleanup when the chat element is destroyed.
Declaration
protected override void DisposeManagedResources()
Overrides
HideOverlay()
Hides any overlays that are currently displayed by the chat control, restoring normal chat functionality and returning focus to the input text box.
Declaration
public virtual void HideOverlay()
HideTypingIndicator()
Hides the typing indicator, removing the visual feedback about users typing and clearing any associated text or animation.
Declaration
public virtual void HideTypingIndicator()
OnAttachmentActionRequested(AttachmentActionEventArgs)
Raises the AttachmentActionRequested event and, if the event is not handled, executes the default behavior for the requested AttachmentAction.
Declaration
protected virtual void OnAttachmentActionRequested(AttachmentActionEventArgs e)
Parameters
e
The event data describing the requested action and the attachment(s) it applies to.
OnCardActionClicked(object, CardActionEventArgs)
Raises the CardActionClicked event when a user clicks on a card action, providing event arguments with the action details and source card information.
Declaration
protected virtual void OnCardActionClicked(object sender, CardActionEventArgs e)
Parameters
sender
The card element that triggered the event.
e
A CardActionEventArgs that contains the event data including the card action that was clicked.
OnCopy(CopyEventArgs)
Raises the Copy event using the specified event data.
Declaration
protected virtual void OnCopy(CopyEventArgs e)
Parameters
e
The event data containing information about the copy operation.
Remarks
Derived classes can override this method to provide custom handling when a copy operation is initiated or completed.
OnEditCancelled(EventArgs)
Raises the EditCancelled event when the user cancels editing a message.
OnEditStarted(ReplyEventArgs)
Raises the EditStarted event when the user starts editing a message.
Declaration
protected virtual void OnEditStarted(ReplyEventArgs e)
Parameters
e
A ReplyEventArgs that contains the event data.
OnInputTextBoxKeyDown(object, KeyEventArgs)
Handles key down events in the input text box, processing Enter key to send messages, Shift+Enter for new lines, and Ctrl+V paste operations for images from the clipboard.
Declaration
protected virtual void OnInputTextBoxKeyDown(object sender, KeyEventArgs e)
Parameters
sender
The source of the event.
e
A KeyEventArgs that contains the event data including key information.
OnItemFormatting(ChatItemElementEventArgs)
Raises the ItemFormatting event when a chat item element is being prepared for display, allowing custom formatting and styling of message elements.
Declaration
protected virtual void OnItemFormatting(ChatItemElementEventArgs e)
Parameters
e
A ChatItemElementEventArgs that contains the event data including the element being formatted and its associated data.
OnMessageDeleted(MessageDeletedEventArgs)
Raises the MessageDeleted event when a message has been deleted.
Declaration
protected virtual void OnMessageDeleted(MessageDeletedEventArgs e)
Parameters
e
A MessageDeletedEventArgs that contains the event data.
OnMessageEdited(MessageEditedEventArgs)
Raises the MessageEdited event when a message has been edited.
Declaration
protected virtual void OnMessageEdited(MessageEditedEventArgs e)
Parameters
e
A MessageEditedEventArgs that contains the event data.
OnPromptInputSendMessage(object, PromptInputSendMessageEventArgs)
Handles the SendMessage event from the PromptInputElement, submitting user messages when text or attached files are provided.
Declaration
protected virtual void OnPromptInputSendMessage(object sender, PromptInputSendMessageEventArgs e)
Parameters
sender
The source of the event.
e
PromptInputSendMessageEventArgs
A PromptInputSendMessageEventArgs that contains the message text and attached files.
OnPropertyChanged(RadPropertyChangedEventArgs)
Handles property change events by invalidating the fill cache and invoking the base class property change handler.
Declaration
protected override void OnPropertyChanged(RadPropertyChangedEventArgs e)
Parameters
e
Event arguments containing information about the property that changed.
Overrides
OnRegenerateResponse(RegenerateResponseEventArgs)
Raises the RegenerateResponse event using the specified event data.
Declaration
protected virtual void OnRegenerateResponse(RegenerateResponseEventArgs e)
Parameters
e
The event data associated with the RegenerateResponse event.
Remarks
Override this method in a derived class to provide custom handling when the RegenerateResponse event is raised.
OnReplyBubbleClicked(ReplyBubbleClickedEventArgs)
Raises the ReplyBubbleClicked event when a reply bubble is clicked.
Declaration
protected virtual void OnReplyBubbleClicked(ReplyBubbleClickedEventArgs e)
Parameters
e
A ReplyBubbleClickedEventArgs that contains the event data.
OnReplyCancelled(EventArgs)
Raises the ReplyCancelled event when the user cancels replying to a message.
OnReplyStarted(ReplyEventArgs)
Raises the ReplyStarted event when the user starts replying to messages.
Declaration
protected virtual void OnReplyStarted(ReplyEventArgs e)
Parameters
e
A ReplyEventArgs that contains the event data including the message(s) being replied to.
OnSendMessage(SendMessageEventArgs)
Raises the SendMessage event when a user action triggers message sending, providing event arguments with the message details.
Declaration
protected virtual void OnSendMessage(SendMessageEventArgs e)
Parameters
e
A SendMessageEventArgs that contains the event data including the message being sent.
OnShowToolbarButtonElementClick(object, EventArgs)
Handles click events on the show toolbar button element, toggling the visibility of the chat toolbar to provide access to extended functionality.
OnSuggestedActionClicked(SuggestedActionEventArgs)
Raises the SuggestedActionClicked event when a user clicks on a suggested action, providing event arguments with the action details.
Declaration
protected virtual void OnSuggestedActionClicked(SuggestedActionEventArgs e)
Parameters
e
A SuggestedActionEventArgs that contains the event data including the suggested action that was clicked.
OnTimeSeparatorAdding(TimeSeparatorEventArgs)
Raises the TimeSeparatorAdding event when a message is being added, allowing custom logic to determine time separator insertion.
Declaration
protected virtual void OnTimeSeparatorAdding(TimeSeparatorEventArgs e)
Parameters
e
A TimeSeparatorEventArgs that contains the event data including timing information and separator insertion control.
OnToolbarActionClick(ToolbarActionEventArgs)
Raises the ToolbarActionClicked event when a user clicks on a toolbar action, providing event arguments with the action details.
Declaration
protected virtual void OnToolbarActionClick(ToolbarActionEventArgs e)
Parameters
e
A ToolbarActionEventArgs that contains the event data including the toolbar action that was clicked.
OnUserVoted(UserVotedEventArgs)
Raises the UserVoted event using the specified event data.
Declaration
protected virtual void OnUserVoted(UserVotedEventArgs e)
Parameters
e
The event data containing information about the user vote.
Remarks
Derived classes can override this method to provide custom handling when a user vote occurs. This method invokes the UserVoted event if there are any subscribers.
OnVisualItemCreating(VisualItemCreatingEventArgs)
Raises the VisualItemCreating event to allow customization or handling when a visual item is being created.
Declaration
protected virtual void OnVisualItemCreating(VisualItemCreatingEventArgs e)
Parameters
e
An object that contains the event data for the visual item creation process.
Remarks
Derived classes can override this method to provide custom logic when a visual item is being created. This method is typically called before the visual item is added to the control.
PostPaintChildren(IGraphics, Rectangle, float, SizeF)
Performs post-paint operations for child elements, including custom border painting to enhance the visual appearance of the chat interface.
Declaration
protected override void PostPaintChildren(IGraphics graphics, Rectangle clipRectangle, float angle, SizeF scale)
Parameters
graphics
The IGraphics object used for painting operations.
clipRectangle
The clipping rectangle that defines the visible area for painting.
angle
The rotation angle for the painting operation.
scale
The scaling factor for the painting operation.
Overrides
ProcessMouseWheel(MouseEventArgs)
Handles mouse wheel events to provide smooth scrolling functionality within the chat messages area, automatically calculating and applying appropriate scroll values.
Declaration
public virtual void ProcessMouseWheel(MouseEventArgs e)
Parameters
e
A MouseEventArgs that contains the mouse wheel event data including delta values for scroll calculations.
RemoveFromReply(ChatMessage)
Removes a message from the current reply.
Declaration
public virtual void RemoveFromReply(ChatMessage message)
Parameters
message
The message to remove from the reply.
ShowOverlay(ChatOverlayMessage)
Displays the specified overlay message in the chat interface, supporting both modal overlays that block the input and popup overlays that appear above the conversation.
Declaration
public virtual void ShowOverlay(ChatOverlayMessage message)
Parameters
message
The ChatOverlayMessage containing the overlay information, display configuration, and content to be shown to the user.
ShowTypingIndicator(params Author[])
Displays a typing indicator for the specified authors, providing visual feedback to users about who is currently composing messages in the chat conversation.
Declaration
public virtual void ShowTypingIndicator(params Author[] authors)
Parameters
authors
Author[]
The authors who are currently typing messages. If null or empty, displays a generic typing animation without author names.
StartEdit(ChatMessage)
Starts edit mode for the specified message, loading the message text into the input text box.
Declaration
public virtual void StartEdit(ChatMessage message)
Parameters
message
The message to edit.
StartReply(ChatMessage)
Starts reply mode for the specified message. If is true and already replying, the message is added to the reply list. If is false, the existing reply is replaced. The maximum number of reply messages is controlled by MaxReplyMessages.
Declaration
public virtual bool StartReply(ChatMessage message)
Parameters
message
The message to reply to.
Returns
True if the message was added to the reply list; false if the limit was reached or the message was a duplicate.
SubmitUserMessage()
Submits the current user message from the input text box, handling validation, message creation, and event firing based on the auto-add user messages setting.
Declaration
protected virtual void SubmitUserMessage()
UnwireEvents()
Unwires event handlers to prevent memory leaks and ensure proper cleanup when the chat element is disposed or destroyed.
Declaration
protected virtual void UnwireEvents()
WireEvents()
Wires up event handlers for chat functionality including input text box interactions, button clicks, and localization provider changes.
Declaration
protected virtual void WireEvents()
Events
AttachedFilesChanged
Occurs after the prompt input attached files collection changes (file added or removed, from the built-in dialog or programmatically). Forwarded from AttachedFilesChanged.
Declaration
public event EventHandler AttachedFilesChanged
Event Value
AttachmentActionRequested
Occurs when the user invokes an attachment action (Download, Download All, or Share) on a chat message.
Set Handled to true in the handler to suppress the default
behavior provided by the chat (such as showing the save dialog or opening the share UI).
Declaration
public event EventHandler<AttachmentActionEventArgs> AttachmentActionRequested
Event Value
CardActionClicked
Occurs when the user clicks on a card action element within a ChatCardMessage, enabling interactive card-based interfaces and rich content interactions.
Declaration
public event CardActionEventHandler CardActionClicked
Event Value
Copy
Occurs when a copy operation is initiated or completed.
Declaration
public event EventHandler<CopyEventArgs> Copy
Event Value
Remarks
Subscribers can use this event to respond to copy actions, such as updating the user interface or logging the operation. The event provides a CopyEventArgs instance containing details about the copy event.
EditCancelled
Occurs when the user cancels editing a message.
EditStarted
Occurs when the user starts editing a message.
Declaration
public event ReplyEventHandler EditStarted
Event Value
ItemFormatting
Occurs when the data item of a visual element is changed and the element is prepared for visualization, allowing customization of message appearance, styling, and layout properties.
Declaration
public event ChatItemElementEventHandler ItemFormatting
Event Value
MessageDeleted
Occurs when a message has been deleted.
Declaration
public event MessageDeletedEventHandler MessageDeleted
Event Value
MessageEdited
Occurs when a message has been edited.
Declaration
public event MessageEditedEventHandler MessageEdited
Event Value
RegenerateResponse
Occurs when a response needs to be regenerated, allowing subscribers to handle or modify the regeneration process.
Declaration
public event EventHandler<RegenerateResponseEventArgs> RegenerateResponse
Event Value
Remarks
Subscribers can use this event to perform custom actions or update the UI when a response regeneration is triggered. The event provides a RegenerateResponseEventArgs instance containing relevant event data.
ReplyBubbleClicked
Occurs when a reply bubble is clicked, allowing navigation to the message being replied to.
Declaration
public event ReplyBubbleClickedEventHandler ReplyBubbleClicked
Event Value
ReplyCancelled
Occurs when the user cancels replying to a message.
ReplyStarted
Occurs when the user starts replying to one or more messages. The IsMultiReply property indicates if multiple messages are being replied to.
Declaration
public event ReplyEventHandler ReplyStarted
Event Value
SendMessage
Occurs when the user performs a message-sending action such as pressing the Enter key, clicking the Send message button, clicking on a suggested action, clicking on a card action, or confirming an overlay interaction.
Declaration
public event SendMessageEventHandler SendMessage
Event Value
SuggestedActionClicked
Occurs when the user clicks on a suggested action element within a ChatSuggestedActionsMessage, providing quick response options and streamlined user interactions.
Declaration
public event SuggestedActionEventHandler SuggestedActionClicked
Event Value
TimeSeparatorAdding
Occurs after a new message is added to the chat but before it is displayed, allowing customization of whether a time separator should be inserted before the currently added message based on timing and context.
Declaration
public event TimeSeparatorEventHandler TimeSeparatorAdding
Event Value
ToolbarActionClicked
Occurs when the user clicks on a toolbar action element, providing access to chat-level functionality and administrative operations.
Declaration
public event ToolbarActionEventHandler ToolbarActionClicked
Event Value
UserVoted
Occurs when a user submits a vote.
Declaration
public event EventHandler<UserVotedEventArgs> UserVoted
Event Value
Remarks
Subscribe to this event to be notified whenever a user completes a voting action. The event provides details about the user and the vote through the UserVotedEventArgs parameter.
VisualItemCreating
Occurs when a new visual item is being created, allowing customization of its initialization or appearance.
Declaration
public event EventHandler<VisualItemCreatingEventArgs> VisualItemCreating
Event Value
Remarks
Handle this event to modify or configure visual items before they are added to the visual tree. This event is typically raised during the rendering or data binding process, enabling developers to set properties or attach behaviors to visual elements as they are instantiated.