说明
两种用法:① 页面内放 Modal,点遮罩 / ESC / 右上关闭触发 OnClose,由调用方 @bind-Visible 控制显隐;② 不引用组件,调用 UIService.ShowModal(new ModalModel),由 Container 中的全局 ModalHost 统一渲染与回收,Width 设像素宽、Size 用预设,正文既可用 ComponentBuilder 以代码动态创建组件(Content = b => b.Component
常见能力:
- 三种尺寸 + 像素宽
- 图标标题
- 隐藏头部
- 自定义页脚
- 遮罩/ESC 关闭
- UIService.ShowModal 代码弹窗
- ComponentBuilder 动态正文
- 模态栈叠加
- 标题栏拖拽移动
用法
@* 方式一:页面内引用,双向绑定 *@
@if (open)
{
<Modal Title="删除确认" Icon="alert"
OnClose="@(() => open = false)">
删除后不可恢复,确认继续?
<Footer>
<Button Text="取消" OnClick="@(() => open = false)" />
<Button Kind="danger" Text="确认删除" OnClick="@Delete" />
</Footer>
</Modal>
}
@* 方式二:UIService 代码弹窗,正文动态创建组件 *@
var model = new ModalModel { Title = "编辑", Width = 480,
Content = b => b.Component<MyForm>(new { Name = "张三" }).Build() };
model.Footer = @<Button Kind="primary" Text="保存" OnClick="@model.Close" />;
UI.ShowModal(model);
API 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ChildContent |
RenderFragment |
null |
|
Closable |
bool |
true |
显示右上角关闭按钮。 |
Draggable |
bool |
true |
是否可按住标题栏拖动弹窗(默认开):隐藏头部或设为 false 时不可拖。最大化态下自动失效。 |
EscClosable |
bool |
true |
ESC 关闭。(当前未接线,保留参数位) |
Footer |
RenderFragment |
null |
底部按钮。 |
HeaderHidden |
bool |
false |
隐藏头部。 |
Icon |
string |
null |
标题图标。 |
MaskClosable |
bool |
false |
点击遮罩关闭。默认 false:点空白处不关闭,只认右上角 × 与底部的取消/关闭按钮—— 弹层里往往已经填了一半表单,误点一次空白就把输入丢掉代价太大。确需「点外面即关」的轻量弹窗再显式传 true。 |
Maximizable |
bool |
false |
是否在标题栏显示「最大化 / 还原」按钮(默认关):字段繁多的编辑表单开启,让用户把弹窗撑满视口看全内容。 |
Message |
string |
null |
正文提示语,配合 ChildContent 可同时使用。 |
OnClose |
EventCallback<bool> |
— | 事件 |
Size |
string |
null |
尺寸:sm / lg / xl / full。 |
Title |
string |
null |
标题。 |
Visible |
bool |
true |
取得或设置组件是否可见,默认为false。 |
VisibleChanged |
EventCallback<bool> |
— | 事件 取得或设置组件可见性变化时的回调事件。 |
Class |
string |
null |
取得或设置组件的CSS类名,用于自定义样式。 |
Disabled |
bool |
false |
取得或设置组件是否禁用,默认为false。 |
Style |
string |
null |
取得或设置组件的内联样式,用于自定义样式。 |
所有组件均继承
BaseComponent,除上表参数外还支持Class、Style、Disabled、Visible。
扫码关注公众号
扫码加入 QQ 群