如何将自定义事件添加到blazor组件



我根据教程在blazor服务器端应用程序中创建了一个选项卡控件。控件运行良好,但我希望能够在活动页面更改时告知。因此,我在代码中添加了一个事件:

internal void ActivatePage(TabPage page)
{
OnTabSelectionChanged();
ActivePage = page;
}
public delegate void TabSelectionChangedEventHandler(object source, EventArgs args);
public event TabSelectionChangedEventHandler TabSelectionChanged;
protected virtual void OnTabSelectionChanged()
{
TabSelectionChanged?.Invoke(this, EventArgs.Empty);
}

现在我想在我的blazor组件中做以下操作,它使用控件:

<TabControl @TabSelectionChanged="MyFunction">
<TabPage Text="tab #1">
<!-- content -->
</TabPage>
<TabPage Text="tab #2"> 
<!-- content -->
</TabPage>
<TabPage Text="tab #3"> 
<!-- content -->
</TabPage>
</TabControl>

如何实现这一点?

对于我上面的案例,EventCallback属性会是什么样子?

我的想法与没有太大不同

@code{
[Parameter]
public EventCallback<TabPage> TabPageActivated { get; set; }
internal async Task ActivatePage(TabPage page)
{
ActivePage = page;
await TabPageActivated.InvokeAsyc(page);
}
}

并在blazor中做以下任何事情,它使用控制:

<TabControl @TabPageActivated="MyFunction">
<TabPage Text="tab #1">
<!-- content -->
</TabPage>
<TabPage Text="tab #2"> 
<!-- content -->
</TabPage>
<TabPage Text="tab #3"> 
<!-- content -->
</TabPage>
</TabControl>
@code{
private async Task MyFunction(TabPage t){
...
}
}

如果你不想要参数TabPage,那么更像:

public EventCallback TabPageActivated { get; set; }
...
await TabPageActivated.InvokeAsyc();
...
private async Task MyFunction(){

相关内容

  • 没有找到相关文章