【问题标题】:How to use Cascading Type Params in this situation?在这种情况下如何使用级联类型参数?
【发布时间】:2022-11-19 14:43:29
【问题描述】:

索引.razor.cs:

我正在开发一个网格组件,它将显示一个项目列表:

<Grid Items="Transactions">
    <GridHeader>
        <GridColumn TItem="Transaction">ID</GridColumn>
        <GridColumn TItem="Transaction">Date</GridColumn>
    </GridHeader>
</Grid> 

然后在 Grid.razor.cs 和 GridColumn.razor.cs 中我使用类型参数 TItem。但似乎我需要在每个网格列中将 TITem 作为参数传递,我如何才能实现对以下内容的支持:

<Grid Items="Transactions" TItem="Transaction">
    <GridHeader>
        <GridColumn>ID</GridColumn>
        <GridColumn>Date</GridColumn>
    </GridHeader>
</Grid>   

因此 TItem 会级联到所有子组件(不管它们嵌套的深度如何)

我查看了 CascadingTypeParam 但有关它的信息很少,所以如果它是上述解决方案,我不确定如何使用它。

【问题讨论】:

    标签: blazor blazor-server-side blazor-webassembly


    【解决方案1】:

    在 Grid.razor 的顶部添加:

    @attribute [CascadingTypeParameter(nameof(TItem))]
    

    级联类型参数

    将泛型类型参数表示为级联。这允许泛型类型推断在也具有同名类型参数的后代上自动使用此类型参数值。

    【讨论】:

    • 谢谢,我最初确实尝试过这个,但它没有用,那是因为在我的示例中,我没有意识到我必须将类型参数添加到 GridHeader,然后它才能级联到 GridColumn。我只是将我的类型参数添加到 GridColumn 假设它会通过遍历关系链来推断类型本身
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    相关资源
    最近更新 更多