c# - Blazor WASM - 防止子组件被点击
问题描述
我正在制作一个简单的 ASP.NET Blazor WASM 项目,其中包含一个折叠面板列表,如此屏幕截图所示。 折叠面板是不涉及 javascript 的 blazor 组件。目前,当我单击面板顶部的按钮时,它会触发下面面板的折叠更改。我必须对折叠面板组件进行哪些更改,以便它们不受单击父元素(例如按钮)的影响?
索引.razor
<Accordion @ref="_accordion" id="ac1" ActiveCollapsePanel="@_activePanel" OnCollapsePanelChanged="OnAccordionChanged" >
<CollapsePanels>
@foreach (var box in boxes)
{
<CollapsePanel style="margin-bottom: 10px;" CollapsedColor="@_accordionCollapsedColor" ExpandedColor="@_accordionExpandedColor" HoverColor="@_accordionHoverColor" Animate="@_isAnimated" ShowContentOverflow="true" ContentHeight="0">
<CollapsedHeaderContent>
<div class="w-100">
<h5>@box.Hostname | @box.Ip</h5>
<button class="btn btn-success">Click me</button>
...
</div>
</CollapsedHeaderContent>
<ExpandedHeaderContent>
<div class="w-100">
<h5>@box.Hostname | @box.Ip </h5>
<button class="btn btn-success">Click me</button>
...
</div>
</ExpandedHeaderContent>
...
CollapsePanel.razor
<div @ref="_inputRef" class="collapsePanel" tabindex="200" disabled="@Disabled" @attributes=AllOtherAttributes>
@if (Collapsed)
{
<div id="@($"collapse_{_componentId}")" class="collapseHeader collapsed @(Animate ? "animate" : "")" @onclick="ExpandCollapse">
@(CommonHeader ?? CollapsedHeaderContent)
</div>
}
else
{
<div id="@($"collapse_{_componentId}")" class="collapseHeader expanded @(Animate ? "animate" : "")" @onclick="ExpandCollapse">
@(CommonHeader ?? ExpandedHeaderContent)
</div>
}
<div class="collapseContent @(Animate ? "animate" : "")"
style="opacity: @(Collapsed ? "0" : "1"); max-height: @GetContentHeight(); overflow: @(ShowContentOverflow ? "auto" : "hidden");">
@Content
</div>
</div>
折叠面板的代码取自这个github。
解决方案
推荐阅读
- javascript - 我们可以在 VueJ 的“类型”属性中添加多个值吗?
- reactjs - React:将值从 componentDidMount 传递给 render()
- angular - 无法从商店 ngrx 获取值
- r - 使用 tidyverse 同时过滤、汇总并将结果放入同一数据框的新列中的指定位置
- swift - 两个几乎相同的功能合二为一?
- android - 用户手动向上滚动导航栏后如何再次隐藏导航栏?
- json - 加快将 json 解析为类对象
- apache-atlas - 将元数据从 RDBMS 导入 Apache Atlas
- c# - 从字符串中删除最后一个特定字符
- php - 无法更正我的代码:从字符串转换日期和/或时间时转换失败