优化渲染逻辑和界面布局

在 `MarkdownWpfRenderer.cs` 中,更新了 `RenderHtmlBlock` 方法以处理以 `<think>` 开头的文本,返回包含进度条和可选择文本块的 `Expander` 控件。更新了 `App.xaml`,移除了 `mu:ThemeDictionary` 的 `ColorMode` 属性。修改了 `AiMessageControll.xaml`,将布局从 `StackPanel` 更改为 `DockPanel`,并添加了 `ButtonGroup`。在 `ImportViewModel.cs` 中,调整了调试模式下的消息处理逻辑,确保正确处理用户输入的消息。
This commit is contained in:
lihanbo 2025-03-05 09:41:15 +08:00
parent 0ab9b35fde
commit 735fbfb83d
4 changed files with 41 additions and 24 deletions

View File

@ -379,15 +379,22 @@ public class MarkdownWpfRenderer
if (text.StartsWith("<think>"))
{
text = text.Replace("<think>", "").Replace("</think>", "");
var htmlText = new SelectableTextBlock();
htmlText.Text = text;
var expander = new Expander();
var header = new StackPanel();
header.Children.Add(new ProgressBar() { IsIndeterminate = true, Width = 30 });
expander.Header = header;
expander.Content = htmlText;
return expander;
}
var htmlText = new SelectableTextBlock();
htmlText.Text = text;
var expander = new Expander();
var header = new StackPanel();
header.Children.Add(new ProgressBar() { IsIndeterminate = true,Width = 30 });
expander.Header = header;
expander.Content = htmlText;
return expander;
else
{
var htmlText = new SelectableTextBlock();
htmlText.Text = text;
return htmlText;
}
}
public FrameworkElement RenderMathBlock(MathBlock mathBlock, CancellationToken cancellationToken)

View File

@ -12,7 +12,7 @@
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml" />
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml" />
<mu:ControlsDictionary />
<mu:ThemeDictionary ColorMode="Light" />
<mu:ThemeDictionary />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

View File

@ -88,18 +88,28 @@
</TabItem>
</TabControl>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<TextBlock
Margin="0,5,5,0"
FontSize="10"
Foreground="#99000000"
Text="{Binding Content.Length, StringFormat='字数: {0}'}" />
<TextBlock
Margin="0,5,0,0"
FontSize="10"
Foreground="#99000000"
Text="{Binding Timestamp, StringFormat='{}{0:HH:mm}'}" />
</StackPanel>
<DockPanel>
<hc:ButtonGroup Margin="5,0">
<Button
Height="20"
hc:IconElement.Geometry="{StaticResource WindowRestoreGeometry}"
Background="Transparent"
FontSize="10"
Foreground="#99000000" />
</hc:ButtonGroup>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<TextBlock
Margin="0,5,5,0"
FontSize="10"
Foreground="#99000000"
Text="{Binding Content.Length, StringFormat='字数: {0}'}" />
<TextBlock
Margin="0,5,0,0"
FontSize="10"
Foreground="#99000000"
Text="{Binding Timestamp, StringFormat='{}{0:HH:mm}'}" />
</StackPanel>
</DockPanel>
<hc:Divider
Height="10"
Margin="0,3"

View File

@ -321,8 +321,9 @@ public partial class ImportViewModel : ObservableRecipient, IViewModel
};
Messages.Add(aiChat);
#if !DEBUG
var results = TEST_AI_CONTENT.Split('\n');
var promptedMsg = PromptUtil.UsePrompt(message,ExcelPromptString);
#if DEBUG
var results = promptedMsg.Split('\n');
foreach(var result in results)
{
aiChat.Content += result;
@ -330,7 +331,6 @@ public partial class ImportViewModel : ObservableRecipient, IViewModel
await Task.Delay(5);
}
#else
var promptedMsg = PromptUtil.UsePrompt(message,ExcelPromptString);
history.Add(new Microsoft.Extensions.AI.ChatMessage
{
Role = Microsoft.Extensions.AI.ChatRole.User,