Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion wpf-toc.html
Original file line number Diff line number Diff line change
Expand Up @@ -2293,7 +2293,7 @@
<li>2025 Volume 3 - v31.*
<ul>
<li> Weekly Nuget Release
<ul><li><a href="/wpf/release-notes/v31.2.4">v31.2.4</a></li>
<ul><li><a href="/wpf/release-notes/v31.2.5">v31.2.5</a></li><li><a href="/wpf/release-notes/v31.2.4">v31.2.4</a></li>
<li><a href="/wpf/release-notes/v31.2.3">v31.2.3</a></li>
<li><a href="/wpf/release-notes/v31.1.23">v31.1.23</a></li>
<li><a href="/wpf/release-notes/v31.1.22">v31.1.22</a></li>
Expand Down
4 changes: 2 additions & 2 deletions wpf/AI-AssistView/Input-Toolbar.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: post
title: Input Toolbar in WPF AI AssistView control | Syncfusion
description: Learn about the input toolbar feature in the AI AssistView control, which enables users to access quick actions to input textbox responses through toolbar items.
description: The input toolbar in AI AssistView offers quick actions via toolbar items to streamline textbox response entry.
platform: wpf
control: SfAIAssistView
documentation: ug
Expand Down Expand Up @@ -38,7 +38,7 @@ Use the ItemTemplate property to define the appearance and behavior of each tool
<DataTemplate>
<Button Height="24" Width="30" Padding="3" >
<Viewbox>
<Path Fill="Black" Stretch="UniformToFill"
<Path Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type syncfusion:SfAIAssistView}}}" Stretch="UniformToFill"
Data="M10.2656 3.0293C10.5 3.0293 10.7207 3.07422 10.9277 3.16406C11.1348 3.25391 11.3145 3.37695 11.4668 3.5332C11.623 3.68555 11.7461 3.86523 11.8359 4.07227C11.9258 4.2793 11.9707 4.5 11.9707 4.73438C11.9707 4.96484 11.9277 5.18164 11.8418 5.38477C11.7559 5.58789 11.6309 5.77148 11.4668 5.93555L6.31055 11.1152C6.16211 11.2637 5.98633 11.3633 5.7832 11.4141L3.46875 11.9824C3.45312 11.9863 3.4375 11.9902 3.42188 11.9941C3.41016 11.9941 3.39453 11.9941 3.375 11.9941C3.27344 11.9941 3.18555 11.957 3.11133 11.8828C3.04102 11.8086 3.00586 11.7207 3.00586 11.6191C3.00586 11.5996 3.00586 11.584 3.00586 11.5723C3.00977 11.5566 3.01367 11.541 3.01758 11.5254L3.60938 9.22266C3.63281 9.12891 3.66992 9.03711 3.7207 8.94727C3.77539 8.85352 3.83594 8.77344 3.90234 8.70703L9.06445 3.52734C9.22461 3.36719 9.4082 3.24414 9.61523 3.1582C9.82617 3.07227 10.043 3.0293 10.2656 3.0293ZM10.2656 3.7793C10.1406 3.7793 10.0195 3.80273 9.90234 3.84961C9.78906 3.89648 9.6875 3.96484 9.59766 4.05469L4.43555 9.24023C4.38477 9.29102 4.35156 9.34766 4.33594 9.41016L3.90234 11.1035L5.60742 10.6816C5.67383 10.666 5.73242 10.6328 5.7832 10.582L10.9395 5.4082C11.0293 5.31836 11.0977 5.21484 11.1445 5.09766C11.1914 4.98047 11.2148 4.85938 11.2148 4.73438C11.2148 4.60547 11.1895 4.48242 11.1387 4.36523C11.0918 4.24805 11.0254 4.14648 10.9395 4.06055C10.8535 3.97461 10.752 3.90625 10.6348 3.85547C10.5215 3.80469 10.3984 3.7793 10.2656 3.7793ZM5.58398 5.95898L5.00391 6.53906L4.5 5.25H1.50586L0.726562 7.25977C0.699219 7.33008 0.652344 7.38672 0.585938 7.42969C0.523438 7.47266 0.455078 7.49414 0.380859 7.49414C0.275391 7.49414 0.185547 7.45898 0.111328 7.38867C0.0371094 7.31836 0 7.23047 0 7.125C0 7.10156 0.00195312 7.07812 0.00585938 7.05469C0.00976562 7.02734 0.015625 7.00391 0.0234375 6.98438L2.64844 0.234375C2.67969 0.160156 2.72656 0.101562 2.78906 0.0585938C2.85156 0.015625 2.92188 -0.00585938 3 -0.00585938C3.07812 -0.00585938 3.14844 0.015625 3.21094 0.0585938C3.27344 0.101562 3.32031 0.160156 3.35156 0.234375L5.58398 5.95898ZM3 1.40039L1.79883 4.5H4.21289L3 1.40039Z"/>
</Viewbox>
</Button>
Expand Down
169 changes: 167 additions & 2 deletions wpf/AI-AssistView/Open-AI.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
layout: post
title: TypingIndicator in WPF AI AssistView control | Syncfusion
title: Open-AI in WPF AI AssistView control | Syncfusion
description: Learn about how to connect the AI AssistView control with OpenAI and chat gpt conversation experience.
platform: wpf
control: SfAIAssistView
Expand Down Expand Up @@ -208,4 +208,169 @@ Set the ViewModel as the DataContext for the AI AssistView or the parent window.
{% endhighlight %}
{% endtabs %}

![WPF AI AssistView control open ai](aiassistview_images/wpf_aiassistview_openai.gif)
![WPF AI AssistView control open ai](aiassistview_images/wpf_aiassistview_openai.gif)

## Customize AI Response Rendering with ViewTemplateSelector in SfAIAssistView
Use the [ViewTemplateSelector](https://help.syncfusion.com/cr/wpf/Syncfusion.UI.Xaml.Chat.SfAIAssistView.html#Syncfusion_UI_Xaml_Chat_SfAIAssistView_ViewTemplateSelector) property to assign a DataTemplateSelector that controls how messages (including AI responses) are rendered in SfAIAssistView. The selector can return different DataTemplates based on the message type or role (user/assistant/system), enabling rich presentations such as:
- Markdown (via a Markdown viewer like MdXaml)
- FlowDocument-based layouts
- Images and custom visuals
- HTML (via a WebBrowser control or third-party HTML renderer)

This approach lets you tailor the appearance of assistant messages without modifying your data model.

{% tabs %}
{% highlight xaml %}
<Page
x:Class="GettingStarted.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:GettingStarted"
xmlns:mdxam="clr-namespace:MdXaml;assembly=MdXaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:syncfusion="using:Syncfusion.UI.Xaml.Chat"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Window.Resources>
<local:ViewTemplateSelector x:Key="viewTS">
<local:ViewTemplateSelector.AITemplate>
<DataTemplate>
<Border Background="Transparent">
<StackPanel>
<Image Height="200" Width="500"
Source="statue-liberty.jpg"
HorizontalAlignment="Left"/>
<mdxam:MarkdownScrollViewer
Markdown="{Binding Text}"
Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"
VerticalScrollBarVisibility="Auto"
IsHitTestVisible="False"
Padding="8">
<mdxam:MarkdownScrollViewer.MarkdownStyle>
<Style TargetType="FlowDocument" BasedOn="{x:Static mdxam:MarkdownStyle.Standard}">
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontFamily" Value="Segoe UI"/>
<Style.Resources>
<Style TargetType="Paragraph" x:Key="H1">
<Setter Property="FontSize" Value="20"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Margin" Value="0,0,0,8"/>
</Style>
<Style TargetType="Paragraph" x:Key="H2">
<Setter Property="FontSize" Value="16"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Margin" Value="0,8,0,4"/>
</Style>
<Style TargetType="Image">
<Setter Property="MaxWidth" Value="400"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
</Style.Resources>
</Style>
</mdxam:MarkdownScrollViewer.MarkdownStyle>
</mdxam:MarkdownScrollViewer>
</StackPanel>
</Border>
</DataTemplate>
</local:ViewTemplateSelector.AITemplate>
</local:ViewTemplateSelector>
</Window.Resources>
<Grid>
<Grid.DataContext>
<local:ViewModel/>
</Grid.DataContext>
<syncfusion:SfAIAssistView CurrentUser="{Binding CurrentUser}"
Suggestions="{Binding Suggestion}"
ShowTypingIndicator="True"
TypingIndicator="{Binding TypingIndicator}"
Messages="{Binding Chats}"
ViewTemplateSelector="{StaticResource viewTS}"/>
</Grid>
</Page>

{% endhighlight %}
{% highlight C# %}

public class ViewTemplateSelector : DataTemplateSelector
{
public DataTemplate AITemplate { get; set; }

public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (item is AIMessage)
{
return AITemplate;
}
return null;
}
}

public class AIMessage : NotificationObject, ITextMessage
{

private string solution;

/// <summary>
/// Gets or sets the text to be display as the message.
/// </summary>
public string Solution
{
get
{
return this.solution;
}
set
{
this.solution = value;
RaisePropertyChanged(nameof(Solution));
}
}

private Author author;

/// <summary>
/// Gets or sets the author to be display in the message.
/// </summary>
public Author Author
{
get { return author; }
set
{
author = value;
RaisePropertyChanged(nameof(Author));
}
}

private DateTime dateTime;

/// <summary>
/// Gets or sets the date and time details when the message was created.
/// </summary>
public DateTime DateTime
{
get { return dateTime; }
set
{
dateTime = value;
RaisePropertyChanged(nameof(DateTime));
}
}

private string text;

/// <summary>
/// Gets or sets the text to be display as the message.
/// </summary>
public string Text
{
get { return text; }
set { text = value; RaisePropertyChanged(nameof(Text)); }
}
}

{% endhighlight %}
{% endtabs %}

![WPF AI AssistView control ViewTemplateSelector](aiassistview_images/wpf_aiassistview_openai1.png)

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
169 changes: 167 additions & 2 deletions wpf/AI-AssistView/open-ai.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
layout: post
title: TypingIndicator in WPF AI AssistView control | Syncfusion
title: Open-AI in WPF AI AssistView control | Syncfusion
description: Learn about how to connect the AI AssistView control with OpenAI and chat gpt conversation experience.
platform: wpf
control: SfAIAssistView
Expand Down Expand Up @@ -208,4 +208,169 @@ Set the ViewModel as the DataContext for the AI AssistView or the parent window.
{% endhighlight %}
{% endtabs %}

![WPF AI AssistView control open ai](aiassistview_images/wpf_aiassistview_openai.gif)
![WPF AI AssistView control open ai](aiassistview_images/wpf_aiassistview_openai.gif)

## Customize AI Response Rendering with ViewTemplateSelector in SfAIAssistView
Use the [ViewTemplateSelector](https://help.syncfusion.com/cr/wpf/Syncfusion.UI.Xaml.Chat.SfAIAssistView.html#Syncfusion_UI_Xaml_Chat_SfAIAssistView_ViewTemplateSelector) property to assign a DataTemplateSelector that controls how messages (including AI responses) are rendered in SfAIAssistView. The selector can return different DataTemplates based on the message type or role (user/assistant/system), enabling rich presentations such as:
- Markdown (via a Markdown viewer like MdXaml)
- FlowDocument-based layouts
- Images and custom visuals
- HTML (via a WebBrowser control or third-party HTML renderer)

This approach lets you tailor the appearance of assistant messages without modifying your data model.

{% tabs %}
{% highlight xaml %}
<Page
x:Class="GettingStarted.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:GettingStarted"
xmlns:mdxam="clr-namespace:MdXaml;assembly=MdXaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:syncfusion="using:Syncfusion.UI.Xaml.Chat"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Window.Resources>
<local:ViewTemplateSelector x:Key="viewTS">
<local:ViewTemplateSelector.AITemplate>
<DataTemplate>
<Border Background="Transparent">
<StackPanel>
<Image Height="200" Width="500"
Source="statue-liberty.jpg"
HorizontalAlignment="Left"/>
<mdxam:MarkdownScrollViewer
Markdown="{Binding Text}"
Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"
VerticalScrollBarVisibility="Auto"
IsHitTestVisible="False"
Padding="8">
<mdxam:MarkdownScrollViewer.MarkdownStyle>
<Style TargetType="FlowDocument" BasedOn="{x:Static mdxam:MarkdownStyle.Standard}">
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontFamily" Value="Segoe UI"/>
<Style.Resources>
<Style TargetType="Paragraph" x:Key="H1">
<Setter Property="FontSize" Value="20"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Margin" Value="0,0,0,8"/>
</Style>
<Style TargetType="Paragraph" x:Key="H2">
<Setter Property="FontSize" Value="16"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Margin" Value="0,8,0,4"/>
</Style>
<Style TargetType="Image">
<Setter Property="MaxWidth" Value="400"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
</Style.Resources>
</Style>
</mdxam:MarkdownScrollViewer.MarkdownStyle>
</mdxam:MarkdownScrollViewer>
</StackPanel>
</Border>
</DataTemplate>
</local:ViewTemplateSelector.AITemplate>
</local:ViewTemplateSelector>
</Window.Resources>
<Grid>
<Grid.DataContext>
<local:ViewModel/>
</Grid.DataContext>
<syncfusion:SfAIAssistView CurrentUser="{Binding CurrentUser}"
Suggestions="{Binding Suggestion}"
ShowTypingIndicator="True"
TypingIndicator="{Binding TypingIndicator}"
Messages="{Binding Chats}"
ViewTemplateSelector="{StaticResource viewTS}"/>
</Grid>
</Page>

{% endhighlight %}
{% highlight C# %}

public class ViewTemplateSelector : DataTemplateSelector
{
public DataTemplate AITemplate { get; set; }

public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (item is AIMessage)
{
return AITemplate;
}
return null;
}
}

public class AIMessage : NotificationObject, ITextMessage
{

private string solution;

/// <summary>
/// Gets or sets the text to be display as the message.
/// </summary>
public string Solution
{
get
{
return this.solution;
}
set
{
this.solution = value;
RaisePropertyChanged(nameof(Solution));
}
}

private Author author;

/// <summary>
/// Gets or sets the author to be display in the message.
/// </summary>
public Author Author
{
get { return author; }
set
{
author = value;
RaisePropertyChanged(nameof(Author));
}
}

private DateTime dateTime;

/// <summary>
/// Gets or sets the date and time details when the message was created.
/// </summary>
public DateTime DateTime
{
get { return dateTime; }
set
{
dateTime = value;
RaisePropertyChanged(nameof(DateTime));
}
}

private string text;

/// <summary>
/// Gets or sets the text to be display as the message.
/// </summary>
public string Text
{
get { return text; }
set { text = value; RaisePropertyChanged(nameof(Text)); }
}
}

{% endhighlight %}
{% endtabs %}

![WPF AI AssistView control ViewTemplateSelector](aiassistview_images/wpf_aiassistview_openai1.png)

Loading