Back to Devexpress

DxAIChat.ResourceItemTemplate Property

blazor-devexpress-dot-aiintegration-dot-blazor-dot-chat-dot-dxaichat-c39714e9.md

latest4.6 KB
Original Source

DxAIChat.ResourceItemTemplate Property

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

Declaration

csharp
[Parameter]
public RenderFragment<AIChatResource> ResourceItemTemplate { get; set; }

Property Value

TypeDescription
RenderFragment<AIChatResource>

The template content.

|

Remarks

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:

razor
<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();
    }
}
csharp
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

DxAIChat Class

DxAIChat Members

DevExpress.AIIntegration.Blazor.Chat Namespace