Jx.Cms开发笔记(四)-改造Card组件
在Blazor 组件库 BootstrapBlazor 中Card组件介绍中我们说过,如果我们使用了Card组件的IsCollapsible
属性设置了可伸缩的话,就只能使用Text属性来设置标题文本,不能自己定义了。
但是我们在widget组件设置的时候希望在CardHeader里放一个按钮或者一个下拉按钮,来完成一些事情,样子如下:
这里右边的添加到部分,在原始的Card中实现不了,所以我们需要改造一下。
这里我们可以在BootstrapBlazor的源码中发现,Card组件实际上是继承了CardBase.cs
,所以我们也可以简单的也继承CardBase
,把Card.razor
的代码复制到我们WidgetCard
中。
现在来看代码:
@inherits CardBase
<div @attributes="@AdditionalAttributes" class="@ClassName">
@if (CardHeader != null || !string.IsNullOrEmpty(HeaderText))
{
<div class="card-header">
<div style="display: flex;align-items: center">
<div class="card-collapse is-open" @ref="CardEelement">
<i class="card-collapse-arrow fa fa-chevron-circle-right"></i>
<div class="card-title">@HeaderText</div>
</div>
@CardHeader
</div>
</div>
}
<div class="@BodyClassName">
@CardBody
</div>
@if (CardFooter != null)
{
<div class="@FooterClassName">
@CardFooter
</div>
}
</div>
@code
{
protected override void OnInitialized()
{
base.OnInitialized();
IsCollapsible = true;
}
}
这里我们在OnInitialized
中将IsCollapsible
直接设置为true
,因为我们默认的widget全部都是可伸缩的,这样我们就可以在使用时少些一点东西。
关键部分是去掉了CardHeader
部分的判断,在原始的Card中有一个判断是
@if (IsCollapsible)
{
<div class="card-collapse is-open" @ref="CardEelement">
<i class="card-collapse-arrow fa fa-chevron-circle-right"></i>
<div class="ms-2">@HeaderText</div>
</div>
}
我们这里直接删掉这个判断,让它不论如何,都渲染CardHeader
就可以了
分类:
Jx.Cms开发笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!