Blazor MatMenu在foreach循环的所有菜单中取最后一个值
MatMenu包含foreach循环中所有listitems的最后一个实例Blazor MatMenu在foreach循环的所有菜单中取最后一个值,blazor,matblazor,Blazor,Matblazor,MatMenu包含foreach循环中所有listitems的最后一个实例 @foreach (var sub in subs) { <MatButton Label="Menu" OnClick="@OnClick" RefBack="@buttonForwardRef"></MatButton> <MatMenu @ref="Menu" TargetForwardRef="@buttonForw
@foreach (var sub in subs)
{
<MatButton Label="Menu" OnClick="@OnClick" RefBack="@buttonForwardRef"></MatButton>
<MatMenu @ref="Menu" TargetForwardRef="@buttonForwardRef">
<MatList SingleSelection="true">
<MatListItem>@sub.SubName</MatListItem>
</MatList>
</MatMenu>
}
@foreach(子系统中的变量子系统)
{
@子名称
}
每行都想要不同的菜单您的问题是在所有菜单之间共享
按钮forwardref
。每个菜单是否需要新的参考:
@using Microsoft.AspNetCore.Components
@foreach (var sub in subs)
{
<MatButton @ref="@sub.Button2"
Label="@sub.SubName"
OnClick="@( (_) => OnClick(sub.Button2, sub.Menu2, sub.SubName) )">
</MatButton>
<MatMenu @ref="@sub.Menu2">
<MatList>
<MatListItem>@sub.SubName</MatListItem>
</MatList>
</MatMenu>
}
<h1>@subTxt</h1>
@functions
{
public class Sub
{
public string SubName {set; get;}
public BaseMatButton Button2 {set; get;} // reference
public BaseMatMenu Menu2 {set; get;} // reference
}
List<Sub> subs = new List<Sub>
{
new Sub() { SubName="A", Button2=null, Menu2=null },
new Sub() { SubName="B", Button2=null, Menu2=null },
new Sub() { SubName="C", Button2=null, Menu2=null },
};
string subTxt = "";
public void OnClick(BaseMatButton button, BaseMatMenu menu, string sub)
{
subTxt=sub;
menu.OpenAsync(button.Ref);
}
}
@使用Microsoft.AspNetCore.Components
@foreach(子系统中的var子系统)
{
@子名称
}
@借口
@功能
{
公开课小组
{
公共字符串子名称{set;get;}
公共BaseMatButton按钮2{set;get;}//reference
公共BaseMatMenu菜单2{set;get;}//reference
}
列表子项=新列表
{
new Sub(){SubName=“A”,Button2=null,Menu2=null},
new Sub(){SubName=“B”,Button2=null,Menu2=null},
new Sub(){SubName=“C”,Button2=null,Menu2=null},
};
字符串subtext=“”;
public void OnClick(BaseMatButton按钮、BaseMatMenu菜单、string子菜单)
{
subtext=sub;
menu.OpenAsync(button.Ref);
}
}
检查样本位置:
我在这里很难找到问题(或问题)部分。在表中,每行创建一个菜单时,foreach都会加载一个菜单,但最后一行菜单只对上面所有行起作用。@novfalhaq,我的回答解决了你的问题吗?