@@ -19,21 +19,42 @@ To bind the Chat to data, set its `Data` parameter to an `IEnumerable<T>` where
1919> caption Basic data binding
2020
2121```` Razor
22- <TelerikChat Data="@Messages "
22+ <TelerikChat Data="@ChatData "
2323 AuthorId="@CurrentUserId"
24- OnSendMessage="@HandleSendMessage ">
24+ OnSendMessage="@OnChatSendMessage ">
2525</TelerikChat>
2626
2727@code {
28- private List<ChatMessage> Messages { get; set; } = new List<ChatMessage>
28+ #region Component Parameters
29+
30+ private List<ChatMessage> ChatData { get; set; }
31+ private string CurrentUserId { get; set; } = "user1";
32+
33+ #endregion
34+
35+ #region Lifecycle Methods
36+
37+ protected override void OnInitialized()
2938 {
30- new ChatMessage { Id = "1", Text = "Hello!", AuthorId = "user1", Timestamp = DateTime.Now.AddMinutes(-5) },
31- new ChatMessage { Id = "2", Text = "Hi there!", AuthorId = "user2", Timestamp = DateTime.Now.AddMinutes(-3) }
32- };
39+ ChatData = new List<ChatMessage>();
40+
41+ for (int i = 1; i <= 2; i++)
42+ {
43+ ChatData.Add(new ChatMessage
44+ {
45+ Id = i.ToString(),
46+ Text = i == 1 ? "Hello!" : "Hi there!",
47+ AuthorId = i == 1 ? "user1" : "user2",
48+ Timestamp = DateTime.Now.AddMinutes(-5 + (i * 2))
49+ });
50+ }
51+ }
3352
34- private string CurrentUserId { get; set; } = "user1";
35-
36- private void HandleSendMessage(ChatSendMessageEventArgs args)
53+ #endregion
54+
55+ #region Methods
56+
57+ private void OnChatSendMessage(ChatSendMessageEventArgs args)
3758 {
3859 var newMessage = new ChatMessage
3960 {
@@ -43,35 +64,30 @@ To bind the Chat to data, set its `Data` parameter to an `IEnumerable<T>` where
4364 Timestamp = DateTime.Now
4465 };
4566
46- Messages .Add(newMessage);
67+ ChatData .Add(newMessage);
4768 }
69+
70+ #endregion
71+
72+ #region Class Declarations
4873
4974 public class ChatMessage
5075 {
5176 public string Id { get; set; }
52-
5377 public string AuthorId { get; set; }
54-
5578 public string AuthorName { get; set; }
56-
5779 public string AuthorImageUrl { get; set; }
58-
5980 public string Text { get; set; }
60-
6181 public string MessageToReplyId { get; set; }
62-
6382 public string Status { get; set; }
64-
6583 public bool IsDeleted { get; set; }
66-
6784 public bool IsPinned { get; set; }
68-
6985 public DateTime Timestamp { get; set; }
70-
7186 public List<string> SuggestedActions { get; set; }
72-
7387 public IEnumerable<FileSelectFileInfo> Attachments { get; set; } = new List<FileSelectFileInfo>();
7488 }
89+
90+ #endregion
7591}
7692````
7793
@@ -98,24 +114,44 @@ The Chat component provides field mapping parameters to work with different data
98114The Chat component automatically reflects changes to the bound data collection. You can add, modify, or remove messages programmatically:
99115
100116```` Razor
101- <TelerikChat @ref="@Chat1 "
102- Data="@Messages "
103- TextField="Content"
117+ <TelerikChat @ref="@ChatRef "
118+ Data="@ChatData "
119+ TextField="@nameof(ChatMessage. Content) "
104120 AuthorId="@CurrentUserId"
105- OnSendMessage="@HandleSendMessage ">
121+ OnSendMessage="@OnChatSendMessage ">
106122</TelerikChat>
107123
108124<div style="margin-top: 20px;">
109- <TelerikButton OnClick="@AddSystemMessage ">Add System Message</TelerikButton>
110- <TelerikButton OnClick="@ClearMessages ">Clear All Messages</TelerikButton>
125+ <TelerikButton OnClick="@OnAddSystemMessageClick ">Add System Message</TelerikButton>
126+ <TelerikButton OnClick="@OnClearMessagesClick ">Clear All Messages</TelerikButton>
111127</div>
112128
113129@code {
114- private TelerikChat<ChatMessage> Chat1 { get; set; }
115- private List<ChatMessage> Messages { get; set; } = new List<ChatMessage>();
116- private string CurrentUserId = "user1";
130+ #region Component References
131+
132+ private TelerikChat<ChatMessage> ChatRef { get; set; }
133+
134+ #endregion
135+
136+ #region Component Parameters
137+
138+ private List<ChatMessage> ChatData { get; set; }
139+ private string CurrentUserId { get; set; } = "user1";
140+
141+ #endregion
142+
143+ #region Lifecycle Methods
144+
145+ protected override void OnInitialized()
146+ {
147+ ChatData = new List<ChatMessage>();
148+ }
149+
150+ #endregion
151+
152+ #region Methods
117153
118- private void HandleSendMessage (ChatSendMessageEventArgs args)
154+ private void OnChatSendMessage (ChatSendMessageEventArgs args)
119155 {
120156 var newMessage = new ChatMessage
121157 {
@@ -126,14 +162,14 @@ The Chat component automatically reflects changes to the bound data collection.
126162 Timestamp = DateTime.Now
127163 };
128164
129- Messages .Add(newMessage);
165+ ChatData .Add(newMessage);
130166
131- Chat1 ?.Refresh();
167+ ChatRef ?.Refresh();
132168 }
133169
134- private void AddSystemMessage ()
170+ private void OnAddSystemMessageClick ()
135171 {
136- Messages .Add(new ChatMessage
172+ ChatData .Add(new ChatMessage
137173 {
138174 Id = Guid.NewGuid().ToString(),
139175 Content = "System notification: New user joined the chat",
@@ -142,25 +178,31 @@ The Chat component automatically reflects changes to the bound data collection.
142178 Timestamp = DateTime.Now
143179 });
144180
145- Chat1 ?.Refresh();
181+ ChatRef ?.Refresh();
146182 }
147183
148- private void ClearMessages ()
184+ private void OnClearMessagesClick ()
149185 {
150- Messages .Clear();
151- Chat1 ?.Refresh();
186+ ChatData .Clear();
187+ ChatRef ?.Refresh();
152188 }
189+
190+ #endregion
191+
192+ #region Class Declarations
153193
154194 public class ChatMessage
155195 {
156- public string Id { get; set; }
157- public string AuthorId { get; set; }
158- public string AuthorName { get; set; }
159- public string Content { get; set; }
160- public DateTime Timestamp { get; set; }
161- public string Status { get; set; }
196+ public string Id { get; set; }
197+ public string AuthorId { get; set; }
198+ public string AuthorName { get; set; }
199+ public string Content { get; set; }
200+ public DateTime Timestamp { get; set; }
201+ public string Status { get; set; }
162202 public IEnumerable<FileSelectFileInfo> Attachments { get; set; } = new List<FileSelectFileInfo>();
163203 }
204+
205+ #endregion
164206}
165207````
166208
0 commit comments