我有以下代码:
@code
{
RenderFragment CreateComponent() => builder =>
{
builder.OpenElement(0, "input");
//...
builder.AddAttribute(0, "onchange", EventCallback.Factory.Create(foo, DoSomething))
}
void DoSomething()
{
//...
}
}
我想将复选框的onchange-event分配给一个方法,但是当我这样做时,我得到以下错误:
参数2:不能从'method group'转换为'EventCallback'
我做错了什么?
更新:
我现在改成:
builder.AddAttribute(1, "Change", RuntimeHelpers.TypeCheck<EventCallback<bool>>(EventCallback.Factory.Create(context, (args) => DoSomething(args))));
现在我收到多个错误:
字段初始化项不能引用非静态字段、方法或属性'.DoSomething(object)'
无法将lambda表达式转换为预期的委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型
更新2
我的RenderFragment-Method在原始版本中是这样的:
RenderFragment<RadzenTreeItem> RenderFileOrFolder = (context) => builder =>
builder.OpenElement(0, "input");
//...
builder.AddAttribute(0, "onchange", EventCallback.Factory.Create(context, DoSomething))
所以可能这就是问题所在…
试试这样:
builder.AddAttribute(12, "Click", Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers.TypeCheck<Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.Web.MouseEventArgs>>(Microsoft.AspNetCore.Components.EventCallback.Factory.Create<Microsoft.AspNetCore.Components.Web.MouseEventArgs>(this,
(args) => Click(args, "Button with text")
)));