blazor-devexpress-dot-aiintegration-dot-blazor-dot-chat-dot-dxaichat-c39714e9.md
Specifies a template for an AI resource entry in the resource picker popup.
Namespace : DevExpress.AIIntegration.Blazor.Chat
Assembly : DevExpress.AIIntegration.Blazor.Chat.v25.2.dll
NuGet Package : DevExpress.AIIntegration.Blazor.Chat
[Parameter]
public RenderFragment<AIChatResource> ResourceItemTemplate { get; set; }
| Type | Description |
|---|---|
| RenderFragment<AIChatResource> |
The template content.
|
Use the ResourceItemTemplate property to customize the layout and appearance of an AI resource entry in the resource picker popup.
The ResourceItemTemplate accepts a AIChatResource object as the context parameter.
The following code snippet adds the AI resource file name to the resource picker entry:
<DxAIChat Resources="Resources">
<ResourceItemTemplate>
<b>@context.Name</b> (@context.Uri)
</ResourceItemTemplate>
</DxAIChat>
@code {
List<AIChatResource> Resources { get; set; } = [];
protected override async Task OnInitializedAsync() {
AIChatResource instructions = await FileResourceProvider.GetTextResourceAsync("instructions",
"Technical Support",
"An assistant that helps troubleshoot technical issues and provides step-by-step solutions.");
AIChatResource documentation = await FileResourceProvider.GetTextResourceAsync("api-reference.md",
"API Reference",
"DevExpress Blazor AI Chat API Reference.");
AIChatResource screenshot = await FileResourceProvider.GetBinaryResourceAsync("ai-chat-image.png",
"AI Chat Screenshot",
"An annotated screenshot of the AI Chat component.",
"image/png");
Resources.Add(instructions);
Resources.Add(documentation);
Resources.Add(screenshot);
await base.OnInitializedAsync();
}
}
public static class FileResourceProvider
{
public static async Task<AIChatResource> GetTextResourceAsync(string resourceFileName,
string title,
string description) {
string filePath = GetResourcePath(resourceFileName);
string fileContent = await File.ReadAllTextAsync(filePath);
string mime = Path.GetExtension(resourceFileName).ToLower() switch {
".md" => "text/markdown",
".html" => "text/html",
_ => "text/plain"
};
AIChatResource resource = new AIChatResource(resourceFileName,
title,
fileContent,
mime,
description);
return resource;
}
public static async Task<AIChatResource> GetBinaryResourceAsync(string resourceFileName,
string title,
string description,
string mime) {
string filePath = GetResourcePath(resourceFileName);
byte[] fileContent = await File.ReadAllBytesAsync(filePath);
AIChatResource resource = new AIChatResource(resourceFileName,
title,
fileContent,
mime,
description);
return resource;
}
private static string GetResourcePath(string resourceFileName) =>
Path.Combine(AppContext.BaseDirectory, "AiResources", resourceFileName);
}
See Also