具有多个参数的Blazor EventCallback-如何响应父主机控件中的事件

具有多个参数的Blazor EventCallback-如何响应父主机控件中的事件,blazor,webassembly,.net-5,Blazor,Webassembly,.net 5,我有一个blazor组件,它带有一个EventCallBack参数,该参数使用了允许多个参数的新结构格式 [Parameter] public EventCallback<(EmployeeShiftDay, DateTime, DateTime)> NewDayScrolledIntoView { get; set; } 在我的主机页中,我有相应的方法来处理调用 private void NewDayInView(EmployeeShiftDay dayInView, DateT

我有一个blazor组件,它带有一个EventCallBack参数,该参数使用了允许多个参数的新结构格式

[Parameter] public EventCallback<(EmployeeShiftDay, DateTime, DateTime)> NewDayScrolledIntoView { get; set; }
在我的主机页中,我有相应的方法来处理调用

private void NewDayInView(EmployeeShiftDay dayInView, DateTime weekStart, DateTime weekEnd)
{
   ...
}
如何在主机组件中添加此EventCallBack的标记?当然,我需要3个参数,而不仅仅是一个参数

<ShiftCardScroller NewDayScrolledIntoView="@((args) => NewDayInView(args))" ></ShiftCardScroller>

您应该只将方法的名称传递给子组件

<ShiftCardScroller NewDayScrolledIntoView="@NewDayInView" ></ShiftCardScroller>

您正在解构调用它:

await NewDayScrolledIntoView.InvokeAsync((p1, p2, p3));
收到事件后,对其进行解构,然后:

<ShiftCardScroller NewDayScrolledIntoView="@((args)=> NewDayInView(args.Item1,args.Item2,args.Item3))" />


临时解决方案是使用@ref引用父主机中的组件,并访问子主机中的公共属性,但希望通过EventCallBack args发送。您不应该这样做。现在这只是一个警告。将来会出现一个错误。这是一个不好的方法-已经像您和@Brian Parker建议的那样实现了。谢谢!感谢您的评论,但这是不允许的-我已经调用了您提到的,但主机控件不会接受“方法组”作为EventCallBack-它正在寻找3arguments@Laurence73显然,这是不可能的检查此链接:根据这后面的帖子它是!它只是没有显示如何添加组件标记!令人沮丧的是,我也可以只传回一个具有3个属性的自定义单个对象…但却违背了多参数功能的目的
await NewDayScrolledIntoView.InvokeAsync((p1, p2, p3));
<ShiftCardScroller NewDayScrolledIntoView="@((args)=> NewDayInView(args.Item1,args.Item2,args.Item3))" />