New to Blazor, having trouble getting a CascadingParameter
to populate from my MainLayout.razor
:
@code{ private Toasts Toasts { get; set; }}<Toasts @ref="@Toasts" /><CascadingValue Value="Toasts"> @Body</CascadingValue>
And Index.razor
page:
[CascadingParameter]public Toasts Toasts { get; set; }public async Task PackageChanged(string value){ Toasts.Something(value); //Toasts is null here}
And finally Toasts.razor:
@code { private string Message { get; set; } public void Something(string message) { Message = message; StateHasChanged(); }}@Message
This code below frustratingly works, but I'd like to cascade just the one component (<Toasts />
) instead of the whole layout:
<CascadingValue Value="@this"><Toasts @ref="@Toasts" /> @Body</CascadingValue>
And then index:
[CascadingParameter]public MainLayout Layout { get; set; } public async Task PackageChanged(string value) { Layout.Toasts.Something(value); //this behaves as expected }