В Blazor вы всегда следуете шаблону:
change data
--> new view rendered
Каждый раз, когда вы хотите изменить пользовательский интерфейс компонента извне, вы должны сделать это, изменив данные (модель / состояние / параметр / контекст /). ..).
Что касается этого сценария, вы можете добавить поле Collapsed
, чтобы указать, свернута ли сейчас сама панель:
<div class="panel panel-default border @Collapse">
<div class="panel-heading alert-primary">
<h3 class="panel-title">Goodwill PKW/smart</h3>
</div>
<div class="panel-body">
<div class="container-fluid">
<div class="row">
<div class="col-sm-2 font-weight-bold">Profile</div>
<div class="col-sm-5">
<input type="checkbox" id="CB_c" />
<label>Salesman</label>
</div>
<div class="col-sm-5">
<input type="checkbox" id="CB_r" />
<label>Administrator</label>
</div>
</div>
</div>
</div>
</div>
@code{
[Parameter]
public string Collapse{get;set;}="collapse"; // hide by default
}
И всякий раз, когда вы хотите свернуть ее,просто установите для этого параметра значение collapse
:
<div class="row">
<div class="col-sm-2 font-weight-bold">GOODWILL PKW/Smart</div>
<div class="col-sm-2">
<label>Add</label>
<input type="checkbox" />
</div>
<div class="col-sm-2">
<label>Change</label>
<input type="checkbox" />
</div>
<div class="col-sm-2">
<label>Remove</label>
<input type="checkbox" />
</div>
<div class="col-sm-4">
<button @onclick="e => this.Collapsed = !this.Collapsed">
@( this.Collapsed ? "+" : "-")
</button>
</div>
</div>
<ModalGoodwillPKW Collapse="@( this.Collapsed ? "collapse": "")" ></ModalGoodwillPKW>
@code {
private bool Collapsed = true;
}
Демо:
[Редактировать]: мы можем даже реорганизовать приведенный выше код для предоставления меньшего количества информации, изменив поле со строкового на логическое.
ModalGoodwillPKW.razor
:
<div class="panel panel-default border <b>@(Collapsed? "collapse": "" )</b> ">
<div class="panel-heading alert-primary">
<h3 class="panel-title">Goodwill PKW/smart</h3>
</div>
...
@code{
[Parameter]
<b>public bool Collapsed{get;set;}= true; </b>// hide by default
}
UserForm.razor
:
<div class="row">
...
<div class="col-sm-4">
<b> <button @onclick="e => this.Collapsed = !this.Collapsed">
@( this.Collapsed ? "+" : "-")
</button></b>
</div>
</div>
<ModalGoodwillPKW <b>Collapsed="@Collapsed" </b>></ModalGoodwillPKW>
@code {
private bool Collapsed = true;
}