From 3d09330a6e4e9a510e2ee7c0b6a62620612869bc Mon Sep 17 00:00:00 2001 From: "fu.wei007" Date: Wed, 8 Jan 2025 15:51:03 +0800 Subject: [PATCH] Add scroll to the end --- .../RealtimeApiSdk.Conversation.cs | 15 ++++++++++++++- .../MainWindow.xaml | 2 +- .../MainWindow.xaml.cs | 13 ++++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Navbot.RealtimeApi.Dotnet.SDK/Navbot.RealtimeApi.Dotnet.SDK.Core/RealtimeApiSdk.Conversation.cs b/Navbot.RealtimeApi.Dotnet.SDK/Navbot.RealtimeApi.Dotnet.SDK.Core/RealtimeApiSdk.Conversation.cs index 51811fe..3bc5ddc 100644 --- a/Navbot.RealtimeApi.Dotnet.SDK/Navbot.RealtimeApi.Dotnet.SDK.Core/RealtimeApiSdk.Conversation.cs +++ b/Navbot.RealtimeApi.Dotnet.SDK/Navbot.RealtimeApi.Dotnet.SDK.Core/RealtimeApiSdk.Conversation.cs @@ -1,11 +1,13 @@ using Navbot.RealtimeApi.Dotnet.SDK.Core.Events; using Navbot.RealtimeApi.Dotnet.SDK.Core.Model.Common; +using System.ComponentModel; using System.Text; namespace Navbot.RealtimeApi.Dotnet.SDK.Core; -public partial class RealtimeApiSdk +public partial class RealtimeApiSdk : INotifyPropertyChanged { + public event PropertyChangedEventHandler? PropertyChanged; private readonly List conversationEntries = new List(); private readonly StringBuilder conversationTextBuilder = new StringBuilder(); public IReadOnlyList ConversationEntries => conversationEntries.AsReadOnly(); @@ -28,6 +30,8 @@ private void AddConversationEntry(string source, string content) conversationEntries.Add(entry); conversationTextBuilder.AppendLine($"{entry.UTCTimestamp:HH:mm:ss} [{entry.Source}] {entry.Content}"); + + NotifyConversationAsTextChanged(); } protected virtual void OnSpeechTextAvailable(TranscriptEventArgs e) @@ -41,4 +45,13 @@ protected virtual void OnPlaybackTextAvailable(TranscriptEventArgs e) AddConversationEntry("AI", e.Transcript); PlaybackTextAvailable?.Invoke(this, e); } + protected virtual void OnPropertyChanged(string propertyName) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + + private void NotifyConversationAsTextChanged() + { + OnPropertyChanged(nameof(ConversationAsText)); + } } diff --git a/Navbot.RealtimeApi.Dotnet.SDK/Navbot.RealtimeApi.Dotnet.SDK.WPF.Sample/MainWindow.xaml b/Navbot.RealtimeApi.Dotnet.SDK/Navbot.RealtimeApi.Dotnet.SDK.WPF.Sample/MainWindow.xaml index e10f439..cd89314 100644 --- a/Navbot.RealtimeApi.Dotnet.SDK/Navbot.RealtimeApi.Dotnet.SDK.WPF.Sample/MainWindow.xaml +++ b/Navbot.RealtimeApi.Dotnet.SDK/Navbot.RealtimeApi.Dotnet.SDK.WPF.Sample/MainWindow.xaml @@ -40,7 +40,7 @@ - + /// Start / Stop Speech Recognition ///