《Blazor》的teleerik UI免费下载30天试用版

在Telerik窗口控件中的razor组件上的级联参数-没有获得值集

环境

产品 Blazor窗口

描述

我有许多嵌套的控件,并且我有一个包含所有控件的级联值。当我将一个嵌套组件放入Telerik窗口时,该组件上的级联参数不起作用(它的值为)).

如果我将组件移到Telerik窗口之外,那么CascadingParamter方法获取正确的值CascadingValue

导致\可能原因(s)

这种行为的原因是Telerik窗口在应用程序的根位置呈现,所以它的内容脱离了原来的CascadingValue组件的上下文。

解决方案

解决方案是公开aCascadingParameter在承载窗口的组件中,并使用新的CascadingValue因为它的内容。这将保持值的嵌套链不被破坏。

第1部分-将值传递给其子组件的最顶层组件

@*样本数据-整数在这种情况下,为了简洁,可以是一个真正的模型*@    @code{公共int MyData {get;设置;} protected override async Task OnInitializedAsync() {MyData = new Random()。下(1000);}}

第2部分-承载teleerik窗口的组件

@*定义了一个新的CascadingValue,它将把数据传播到WindowContent *@ 

ComponentA

OpenPopup < windowscontent >< CascadingValue Value="@MyData" Name="SomeCascadingData">
< WindowAction Name="Minimize"> @code {[CascadingParameter(Name = "SomeCascadingData")] public int MyData {get;设置;}公共bool IsSelectorPopupVisible {get;设置;} = true;protected async Task OpenPopup() {IsSelectorPopupVisible = true;}}

第3部分-窗口内容中的ComponentB像往常一样使用数据

@*在这个例子中,我们在任何地方都保持级联值和参数的名称相同,包括在承载窗口的组件上,这样它们就更容易在树中被使用。*@ 

ComponentB

@if (MyData != null) {
数据为:@MyData
} else {
NO data
} @code {[CascadingParameter(Name="SomeCascadingData")] public int MyData {get;设置;}}

另请参阅

在本文中
Baidu
map