你不能使用
EventCallback
我们正在尝试。它需要在组件类代码中。
以下是您代码的简化版本:
展开组件
<MudButton OnClick="ToggleInner">Toggle inner</MudButton>
@code {
[Parameter] public ExpandModel Model { get; set; } = new();
[Parameter] public EventCallback<ExpandModel> ModelChanged { get; set; }
private void ToggleInner()
{
Model.Expanded = !Model.Expanded;
this.ModelChanged.InvokeAsync(Model);
}
}
public class ExpandModel
{
public bool Expanded { get; set; }
}
和
指数
@page "/"
<PageTitle>Home</PageTitle>
<MudButton @onclick="ToggleOuter">Toggle Outer</MudButton>
<MudExpansionPanels>
<MudExpansionPanel @bind-IsExpanded="Model.Expanded">
<TitleContent>
<ExpandComponent @bind-Model="@Model"></ExpandComponent>
</TitleContent>
<ChildContent>
<h1>Expanded Content</h1>
</ChildContent>
</MudExpansionPanel>
</MudExpansionPanels>
@code {
private ExpandModel Model = new ExpandModel();
private void ToggleOuter()
{
Model.Expanded = !Model.Expanded;
}
}
这是因为绑定
事件回调
被视为UI事件
Index
。由处理
ComponenbtBase's
IHandleEvent
调用的实现
StateHasChanged
为你。
你对
状态已更改
。只有在一些非常特殊的情况下,您需要手动调用它。一般来说,如果您调用它来更新组件,那么您的逻辑是有缺陷的。