You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为自定义Blazor标签添加@onclick点击事件

实现自定义Blazor组件的点击事件传递

要让你的DataRow组件支持触发父组件的点击事件,按以下步骤修改即可:

1. 在DataRow组件中添加点击事件参数

修改DataRow.razor.cs,新增一个EventCallback类型的参数,用于接收父组件传递的点击回调:

public partial class DataRow
{
    [Parameter]
    public RenderFragment? ChildContent { get; set; }

    // 遵循Blazor约定命名为OnClick,对应父组件的@onclick绑定
    [Parameter]
    public EventCallback OnClick { get; set; }
}

2. 绑定组件内部元素的点击事件

修改DataRow.razor,将内部<div>的点击事件与我们定义的OnClick回调关联:

<div @onclick="OnClick">
    @ChildContent
</div>

3. 父组件正常使用@onclick绑定方法

你的父组件代码无需修改,直接通过@onclick绑定方法即可,Blazor会自动将父组件的回调映射到DataRow的OnClick参数:

<DataRow @onclick="MyClickFun"></DataRow>

@code
{
     private void MyClickFun()
     {
       // 这里编写你的点击处理逻辑
     }
}

可选:传递点击事件详情

如果需要获取鼠标位置等点击事件参数,可以调整为带参数的版本:

修改DataRow.razor.cs:

[Parameter]
public EventCallback<MouseEventArgs> OnClick { get; set; }

修改DataRow.razor:

<div @onclick="args => OnClick.InvokeAsync(args)">
    @ChildContent
</div>

父组件方法调整:

private void MyClickFun(MouseEventArgs args)
{
   // 可通过args获取点击位置等信息,比如args.ClientX
}

自定义Blazor组件不会自动继承原生HTML元素的事件,必须显式定义对应的EventCallback参数,并在组件内部的DOM元素上绑定事件触发回调,才能实现父组件方法的调用。

内容的提问来源于stack exchange,提问作者riki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:27:11