Hello,
I have an application where I store and add messages from the database. On startup I manually ladd the last so much messages from the database.
When I initially load, all messages and TimeBreaks are displayed fine. However the last message is not in view. The Chat shows the first lines and the scroll bar is positioned at the top, not at the bottom.
When I add new messages via the inputline, the message is in view
I use Telereik 2024.3.821.462
These message are added using the followin code:
View (code behind) => SendMessage event
private void RadChat_SendMessage(object sender, SendMessageEventArgs e)
{
e.Handled = true;
var updatedMessageText = (e.Message as TextMessage).Text;
ViewModel.AddMessage(updatedMessageText);
}
ViewModel => AddMessages
public async void AddMessage(string updatedMessageText)
{
Message newMessage = new Message();
newMessage.Author = CurrentAuthor.Name;
newMessage.MessageDate = DateTime.Now;
newMessage.MessageText = updatedMessageText;
newMaxMessageId = _dashboardDao.InsertMessages(newMessage);
ReadMessages();
}
private async void ReadMessages()
{
IsReloading = true;
newMaxMessageId = _dashboardDao.GetMaxMessageID();
if (newMaxMessageId > currentMaxMessageId)
{
IEnumerable<Message> newMessages = await _dashboardDao.GetNewMessages(currentMaxMessageId, _sharedVM.NumMessageBoardMessages);
newMessages = newMessages.OrderBy(x => x.MessageId).ToList();
if (newMessages.Count() > 0)
{
if (!IsActive)
{
if (_ShowNewMessages)
{
numNewMessages += newMessages.Count();
HasMessagesData hasMessagesData = new HasMessagesData(true, numNewMessages);
_sharedVM.HasMessages = hasMessagesData;
}
else
{
numNewMessages = 0;
}
}
else
{
numNewMessages= 0;
}
NewTextMessages = new ObservableCollection<TextMessageModel>();
newMessages = newMessages.Where(x => x.MessageId > currentMaxMessageId);
NewTextMessages.Clear();
foreach (Message message in newMessages)
{
if (message.Author == CurrentUser)
{
NewTextMessages.Add(new TextMessageModel() { Text = message.MessageText, Author = CurrentAuthor, CreationDate = message.MessageDate });
}
else
{
NewTextMessages.Add(new TextMessageModel() { Text = message.MessageText, Author = new Author(message.Author), CreationDate = message.MessageDate });
}
if (_ShowNewMessages)
{
_eventAggregator.GetEvent<NewMessageShownEvent>().Publish();
}
}
currentMaxMessageId = newMessages.Last().MessageId;
OnPropertyChanged(nameof(NewTextMessages));
}
}
_ShowNewMessages = true;
IsReloading = false;
}
View (code behind) triggerd by OnPropertyChanged(nameof(NewTextMessages))
his.ViewModel.PropertyChanged += (sender, args) =>
{
if (args.PropertyName == "NewTextMessages")
{
AddNewMessages();
}
};
private void AddNewMessages()
{
foreach (var newMessage in ViewModel.NewTextMessages)
{
if (chat.LastMessage == null)
{
this.chat.AddTimeBreak(newMessage.CreationDate.DayOfWeek.ToString() + " " + newMessage.CreationDate.ToString("MMMM") + " " + newMessage.CreationDate.Day.ToString() + ", " + newMessage.CreationDate.Year);
}
else
{
if ((chat.LastMessage.CreationDate.Year != newMessage.CreationDate.Year) || (chat.LastMessage.CreationDate.Month!= newMessage.CreationDate.Month) || (chat.LastMessage.CreationDate.Day != newMessage.CreationDate.Day))
{
this.chat.AddTimeBreak(newMessage.CreationDate.DayOfWeek.ToString() + " " + newMessage.CreationDate.ToString("MMMM") + " " + newMessage.CreationDate.Day.ToString() + ", " + newMessage.CreationDate.Year);
}
}
var textMessage = new TextMessage(newMessage.Author, newMessage.Text, "sent", newMessage.CreationDate);
this.chat.AddMessage(textMessage);
}
}
Hi,
I need to add a DateField to a TableCell in a RichTextBox so that when a user clicks on the cell in the UI a calendar is displayed.
I can see from the XAML that this is achieved by using the InsertSdtCommand with a CommandParameter of Date, how can a similar result be achieved from within the code.
Thank you.
I am using DateTimePicker on WPF and I would like to know if there is a way to modify the bacjgroud color of the DateTimePicker for a couple of dates.
Thank you in advance.
Hello,
I am using a ChartSeriesProvider to chart multiple LineSeries. I would like each LineSeries to have the actual points styled instead of just being a plain line.
Styling each LineSeries is a little different since I am using a ChartSeriesProvider.
<telerik:RadCartesianChart
Grid.Row="2"
Background="#FF282828">
<telerik:RadCartesianChart.SeriesProvider>
<telerik:ChartSeriesProvider
Source="{Binding InspectionData}">
<telerik:ChartSeriesProvider.SeriesDescriptors>
<telerik:CategoricalSeriesDescriptor
CategoryPath="InspectionDateTime"
ValuePath="InspectionValue"
ItemsSourcePath="CameraChartData"
CollectionIndex="0">
<telerik:CategoricalSeriesDescriptor.Style>
<Style
TargetType="telerik:LineSeries">
<Setter
Property="StrokeThickness"
Value="2" />
<Setter
Property="Stroke"
Value="DeepSkyBlue" />
</Style>
</telerik:CategoricalSeriesDescriptor.Style>
</telerik:CategoricalSeriesDescriptor>
<telerik:CategoricalSeriesDescriptor
CategoryPath="InspectionDateTime"
ValuePath="InspectionValue"
ItemsSourcePath="CameraChartData"
CollectionIndex="1">
<telerik:CategoricalSeriesDescriptor.Style>
<Style
TargetType="telerik:LineSeries">
<Setter
Property="StrokeThickness"
Value="2" />
<Setter
Property="Stroke"
Value="Yellow" />
</Style>
</telerik:CategoricalSeriesDescriptor.Style>
</telerik:CategoricalSeriesDescriptor>
This documentation says
Currently, changing the point marks appearance could be done only via the provided API. Declarative customizations are not supported.
But, this documentation shows a LineSeries has property "Fill" (need to also set size) which is exactly what I want. TargetPath is different, in this example it's set to "Path" and in my xaml it's "telerik:LineSeries" because it has to be since it's in a CategoricalSeriesDescriptor.
How do I style the points? Is it possible?
Hello,
In Telerik, I want to create a Grid that can differentiate between two objects and adjust the row accordingly. I understand that it's possible to customize row styles and templates, but the implementation I'm aiming for is a bit more complex, and I'm encountering some difficulties.
I have an object named "Program" with the following fields:
Additionally, I have another object called "Operation" with the following fields:
The DataGrid takes a collection of 'Program' as input.
Here's what I want to achieve:
When a program contains a single operation, I want to group the program's and operation's data and display everything in a single, non-expandable row.
When a program contains multiple operations, I want to display a parent row with the program’s data and an expandable child grid that shows one operation per row with the relative data.
Is it possible to have different set of columns per each row and have only some rows which are expandable?
Hi,
How can I detect if an appoint is moved?
Which event is being fired and how can I implement this in the ViewModel and View?
Thanks...
can you please help me to created diagram show in image for using created custom edge for "avoid connection overlap" used in Graph dynamically.
hello
i have customprovider base on UriImageProvider.
When I lose my network connectionand I try to move the map quickly or zoom in or out, the program breaks and my visual studio go to getemptyimage located in class imagemapsource.
What I'm doing wrong or how to protect myself from it?