Компоненты Blazor можно обрабатывать как естественные родительские дочерние элементы в xml? - PullRequest
0 голосов
/ 09 апреля 2020

Планируется ли в будущем Blazor поддерживать более естественную компонентную модель в XML, где вы можете объявить компоненты с родителями и детьми, как показано ниже:

<RadioGroup TItem="TestModel.TestEnum"
        @bind-Value="@TestModel.Field5"
        InlineLayout="@InlineLayout"
        ValidationFor="@(() => TestModel.Field5)"
        Label="RadioGroup Field 5 Horizontal">

            <RadioItem Id="Enum1" Label="Enum 1" SelectedValue="TestModel.TestEnum.Enum1" />
            <RadioItem Id="Enum2" Label="Enum 2" SelectedValue="TestModel.TestEnum.Enum2" />
            <RadioItem Id="Enum3" Label="Enum 3" SelectedValue="TestModel.TestEnum.Enum3" />
    </RadioGroup>

Я бы хотел, чтобы RadioGroup была родитель коллекции RadioItems. Каждый RadioItem будет содержать информацию о переключателе. Я хотел бы добавить RadioItems в RadioGroup, а затем из RadioGroup визуализировать каждый из RadioItems в качестве переключателей.

Однако, похоже, что элементы добавляются в коллекцию после того, как она пытается l oop вокруг коллекция элементов.

Этот код в родительском элементе выполняется до вызова OnInitialized в RadioItem.razor

RadioGroup.razor:

@foreach (RadioItem<TItem> item in Items)
{
    @if (!string.IsNullOrEmpty(item.Label))
    {
        <InputRadio Id="@item.Id" Label="@item.Label" SelectedValue="@item.SelectedValue" @bind-Value="@CurrentValue" />
    }                    
}

RadioItem.razor:

[CascadingParameter]
public RadioGroup<TItem> Parent { get; set; }

protected override void OnInitialized()
{
    Parent.AddChild(this);
}

Есть ли способ добавить элементы в родительскую коллекцию до того, как RadioGroup попытается отобразить коллекцию RadioItems?

...