Telerik Forums
UI for WPF Forum
0 answers
70 views

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);
    }
}

Jochem
Top achievements
Rank 1
 asked on 24 Sep 2024
0 answers
36 views
can you please send me a sample project to creating diagram dynamic layout algorithm using very minimum connection overlpping.
Parth
Top achievements
Rank 1
Iron
Iron
 asked on 24 Sep 2024
1 answer
47 views

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.

 

 

Dimitar
Telerik team
 answered on 17 Sep 2024
1 answer
66 views

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.

Stenly
Telerik team
 answered on 16 Sep 2024
1 answer
110 views

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?

 

Martin Ivanov
Telerik team
 answered on 13 Sep 2024
1 answer
55 views

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:

  • String Name;
  • String Id;
  • ObservableCollection<Operation> Operations;

Additionally, I have another object called "Operation" with the following fields:

  • string OpName;
  • string PartId;
  • int NumOfRepetitions;
  • etc.

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?

Martin Ivanov
Telerik team
 answered on 13 Sep 2024
1 answer
49 views

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

Martin Ivanov
Telerik team
 answered on 13 Sep 2024
0 answers
70 views
Hi,
in the project attached there is a very simple example of checkbox column.
I observed that the celleditended event is raised when cell lost focus if I check the box, and immediately when click on check if I uncheck it.

I need the behavior of unchecking also when checking.

Thank you
Luigi
Luigi
Top achievements
Rank 3
Bronze
Iron
Iron
 asked on 12 Sep 2024
0 answers
46 views

can you please help me to created diagram show in image for using created custom edge for "avoid connection overlap" used in Graph  dynamically.

 

Parth
Top achievements
Rank 1
Iron
Iron
 updated question on 11 Sep 2024
0 answers
32 views

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?

 

Sebastian
Top achievements
Rank 1
 asked on 09 Sep 2024
Narrow your results
Selected tags
Tags
+? more
Top users last month
Anislav
Top achievements
Rank 6
Silver
Bronze
Bronze
Jianxian
Top achievements
Rank 1
Iron
Marco
Top achievements
Rank 3
Iron
Iron
Iron
Jim
Top achievements
Rank 2
Iron
Iron
Nurik
Top achievements
Rank 2
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Anislav
Top achievements
Rank 6
Silver
Bronze
Bronze
Jianxian
Top achievements
Rank 1
Iron
Marco
Top achievements
Rank 3
Iron
Iron
Iron
Jim
Top achievements
Rank 2
Iron
Iron
Nurik
Top achievements
Rank 2
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?