首页 > 解决方案 > 更改站点主题时使用函数调用更改嵌套组件的主题

问题描述

我目前有一个 ThemeService 用于管理我网站的主题。

public class ThemeService
{
    IJSRuntime _jsRuntime { get; set; }
    private ThemeEnum _theme;

    public async Task Initialize()
    {
        ...
    }

    public async Task SetTheme(ThemeEnum theme)
    {
        ...
    }  
}

除了嵌套的图形组件外,主题切换工作得很好。

要更改图形的颜色,我需要调用图形组件中存在的函数SetGraphColoring().

public partial class Graph
{
    [Inject] ThemeService themeService { get; set; }

    [Parameter] public string graphTheme { get; set; }
    [Parameter] public string data{ get; set; }

    protected override async Task OnInitializedAsync()
    {
        ...
        {Initialize graph}
    }

    public async Task SetGraphColoring()
    {
        await module.InvokeVoidAsync("ChangeColoring", GraphId, GraphTheme);
    } 
}

该图作为页面上的嵌套组件存在。我将主题传递给它的初始渲染,并且这个渲染正确,并且在主题更改后刷新页面时,正如预期的那样,它将正确重新渲染,因为图形被重新初始化。

<Graph data="data" graphType="line" graphTheme="@(themeService.currentTheme.ToString())" />

如何在更改网站主题的同时更改图表的主题?

标签: c#.netblazor

解决方案


推荐阅读