Индекс.razor.cs:
Я разрабатываю компонент сетки, который будет отображать для него список элементов:
<Grid Items = "Transactions">
<GridHeader>
<GridColumn TItem = "Transaction">ID</GridColumn>
<GridColumn TItem = "Transaction">Date</GridColumn>
</GridHeader>
</Grid>
Затем в Grid.razor.cs и GridColumn.razor.cs я использую typeparam TItem. Но, похоже, мне нужно передать TITem в качестве параметра в каждом столбце сетки, как я могу вместо этого реализовать поддержку чего-то вроде приведенного ниже:
<Grid Items = "Transactions" TItem = "Transaction">
<GridHeader>
<GridColumn>ID</GridColumn>
<GridColumn>Date</GridColumn>
</GridHeader>
</Grid>
Поэтому TItem будет каскадироваться на все дочерние компоненты (независимо от того, насколько глубоко они вложены)
Я просмотрел CascadingTypeParam, но информации о нем мало, поэтому я не уверен, как его использовать, если это решение для вышеуказанного.
В верхней части Grid.razor добавьте:
@attribute [CascadingTypeParameter(nameof(TItem))]
Обозначает параметр универсального типа как каскадный. Это позволяет выводу универсального типа автоматически использовать это значение параметра типа для потомков, у которых также есть параметр типа с тем же именем.
Спасибо, я пробовал это изначально, но это не сработало, потому что в моем примере я не понимал, что мне нужно добавить параметр типа в GridHeader, прежде чем он сможет каскадироваться в GridColumn. Я просто добавлял свой typeparam в GridColumn, предполагая, что он выведет сам тип, пройдя по цепочке отношений.