کامپوننت CascadingValue

از این کامپوننت برای انتقال Parameterها بین کامپوننت‌های تعریف شده در داخل این کامپوننت استفاده می‌شود. بدین معنی که Parameter تعریف شده را تمام کامپوننت‌های زیرمجموعه میتوانند ببینند و آن را نمایش دهند.

برای نمایش دیتای اشتراک گذاشته شده، باید یک فیلد با Attribute از نوع CascadingParameter در کامپوننت فرزند ایجاد کنید.

<h3>Attributes</h3>

<input type="text" @attributes="ComponentAttributes"/>
<br />

@PublicData

@code {
    [Parameter(CaptureUnmatchedValues = true)]
    public Dictionary<string, object> ComponentAttributes { get; set; } = new Dictionary<string, object>();

    [CascadingParameter]
    public string PublicData { get; set; }

}

کامپوننت والد:

@page "/counter"
@using SIPAD.UI.Componnet


<CascadingValue Value="PublicData">
    <Attributes placeholder="type your name..." maxlength="10"></Attributes>
</CascadingValue>



@code {
    public string PublicData { get; set; } = "Hello on public data";

}

توجه داشته باشید که نوع داده‌ای ارسال شده از والد به فرزند اگر تکراری باشد، باعث می‌شود که نزدیکترین CascadingValue موجود در کامپوننت بین تمام پارامترها به اشتراک گذاشته می‌شود.
برای اینکه هر دیتا به پارامتر خودش منتقل شود در کامپوننت CascadingValue از فیلد Name استفاده می‌کنیم تا با استفاده از آن بتوان Value مورد نظرمان را به کامپوننت مورد نظر انتقال دهیم.

کامپوننت والد:

<CascadingValue Value="PublicData" Name="publicItem">
    <Attributes placeholder="type your name..." maxlength="10"></Attributes>
</CascadingValue>

کاپوننت فرزند:

<h3>Attributes</h3>

<input type="text" @attributes="ComponentAttributes"/>
<br />

@PublicData

@code {
    [Parameter(CaptureUnmatchedValues = true)]
    public Dictionary<string, object> ComponentAttributes { get; set; } = new Dictionary<string, object>();

    [CascadingParameter(Name = "publicItem")]
    public string PublicData { get; set; }

}