【发布时间】:2021-07-30 23:43:15
【问题描述】:
我正在尝试创建一个按钮,该按钮可以打开一个可以显示多个按钮的菜单。 (Sample) 当事件正在实施时,我似乎不明白示例是如何在幕后实施的……更多细节可以在这里找到。 (How to Documentation)
他们是如何实现这个模板的和/或是否有另一种方法可以在 Blazor 中实现一个干净的下拉按钮组件而不使用 syncfusion 库?
说清楚;我不是在寻找实现同步融合库的方法。
目前进展:
下拉菜单
<div class="more-options-menu-button">
<button @onclick="OnShowMenuClick" @onclick:stopPropagation="true">
<svg height="24px" width="24px">
<image href=@MoreOptionsIconUrl height="24px" width="24px"></image>
</svg>
</button>
@if (Display)
{
<section class="menu" @onclick:stopPropagation="true">
@MenuOptions
</section>
}
</div>
@code {
[Parameter]
public RenderFragment MenuOptions { get; set; }
private bool Display { get; set; }
private const string MoreOptionsIconUrl = "https://localhost:5001/svg/general/more_vert_24dp.svg";
public void Hide()
{
this.Display = false;
}
public void OnShowMenuClick()
{
this.Display = !this.Display;
}
}
菜单选项
<button id="Id" @onclick="OnClick">
@Title
</button>
@code {
[Parameter]
public string Title { get; set; }
[Parameter]
public EventCallback OnClick { get; set; }
[Parameter]
public string Id { get; set; }
}
如何使用
<OptionsMenuComponent>
<MenuOptions>
<MenuOptionComponent Id="remove" Title="Remove" OnClick="Remove" />
</MenuOptions>
</OptionsMenuComponent>
@code {
private void Remove()
{
Console.WriteLine("Removing...");
}
}
现在的问题是;当菜单打开时,单击菜单选项按钮时无法关闭它,当菜单打开时单击菜单外部时无法关闭它。
如何从组件外部关闭组件?
【问题讨论】: