mcpField
S
syncfusion-blazor-dashboard-layout

syncfusion-blazor-dashboard-layout

github.com/syncfusion设计与 UI4345 次安装1 周前更新
代码仓库

关于 syncfusion-blazor-dashboard-layout

面向 Syncfusion Blazor 开发者的 SfDashboardLayout 实现指南,讲解如何构建可交互的网格面板仪表板。涵盖拖放、调整大小、响应式布局和状态持久化。

主要功能

  1. 01网格面板定位与尺寸约束
  2. 02拖放排列与碰撞处理
  3. 03调整面板大小及浮动
  4. 04断点适配响应式布局
  5. 05使用 localStorage 持久化状态
  6. 06面板模板与样式自定义

适用场景

  1. 01构建可重排的数据分析仪表板
  2. 02保存管理员自定义的控制面板布局
  3. 03制作适配移动端的多面板工作区

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/syncfusion/blazor-ui-components-skills --skill syncfusion-blazor-dashboard-layout

安装后在 Claude Code 中输入/syncfusion-blazor-dashboard-layout确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
advanced-scenarios.md
api-reference.md
drag-drop-functionality.md
getting-started.md
grid-configuration-styling.md
panel-positioning-sizing.md
panel-templates-headers.md
resizing-floating-panels.md
responsive-adaptive-design.md
state-persistence.md

详细介绍

使用 Syncfusion Blazor 实现仪表板布局

Syncfusion Blazor Dashboard Layout 组件为构建响应式交互式仪表板提供了全面的解决方案。本技能将指导你创建灵活的面板式布局,并使用拖放、调整大小、状态持久化和自适应响应式设计等高级功能。

何时使用此技能

在以下情况下使用此技能:

  • 创建仪表板或基于网格的面板布局
  • 允许用户通过拖放重新排列面板
  • 允许调整面板大小并设置尺寸限制
  • 构建能够适应不同屏幕尺寸的响应式布局
  • 保存和恢复用户的布局配置
  • 创建带有标题和动态内容的复杂多面板视图
  • 自定义面板样式和外观
  • 防止动态场景中的面板重叠

组件概述

SfDashboardLayout 可创建基于网格的仪表板,其中的面板是可调整大小、可拖动的容器,并按照可配置的网格进行排列。主要功能:

  • 基于网格定位,使用 Row 和 Column 属性
  • 灵活调整尺寸,以单元格为单位设置宽度(SizeX)和高度(SizeY)
  • 尺寸限制,使用 MinSizeX、MaxSizeX、MinSizeY、MaxSizeY 属性
  • 拖放,支持自动碰撞处理和面板推移
  • 调整大小,支持在多个方向自定义调整手柄
  • 浮动面板,自动上移以填充空白区域
  • 状态持久化到 localStorage,并支持通过编程方式保存、加载和重置
  • 模板,用于标题和动态内容
  • 响应式设计,使用媒体查询断点适配移动设备
  • 基于单元格的网格,支持配置列数、单元格纵横比和间距

文档与导航指南

快速入门 📄 references/getting-started.md

  • 在 WebAssembly 和 Server 应用中设置 Dashboard Layout
  • 安装 NuGet 包(Syncfusion.Blazor.Layouts、Syncfusion.Blazor.Themes)
  • 配置命名空间和 Syncfusion 服务
  • 添加样式表和脚本资源
  • 使用基本面板创建第一个仪表板

核心布局配置 📄 references/panel-positioning-sizing.md

  • 面板的行和列定位
  • 使用 SizeX 和 SizeY 设置面板尺寸
  • 最小/最大尺寸限制(MinSizeX、MaxSizeX、MinSizeY、MaxSizeY)
  • 面板 ID 管理和唯一标识
  • 了解基于单元格的网格系统

交互功能 📄 references/drag-drop-functionality.md

  • 启用拖放重新排列
  • 自动碰撞检测和面板推移
  • 使用 DraggableHandle 属性自定义拖动手柄
  • 使用 CSS 选择器定位拖动手柄
  • 拖动操作期间的占位符可视化

📄 references/resizing-floating-panels.md

  • 使用 AllowResizing 属性启用面板调整大小
  • 使用 ResizableHandles 属性自定义调整方向
  • 使用 AllowFloating 让浮动面板利用空白空间
  • 浮动行为和面板自动向上移动

网格配置与样式 📄 references/grid-configuration-styling.md

  • 使用 Columns 属性配置网格
  • 使用 CellAspectRatio 属性设置单元格宽高比
  • 使用 CellSpacing 属性设置单元格间距(行和列间隙)
  • 使用 ShowGridLines 属性显示网格
  • 使用 CSS 自定义面板标题、内容和背景
  • CSS 类:.e-panel-header、.e-panel-content、.e-resize

响应式与自适应设计 📄 references/responsive-adaptive-design.md

  • 内置对不同屏幕尺寸的响应式支持
  • 使用 MediaQuery 属性自定义断点
  • 低分辨率下自动切换为堆叠布局(默认 600px)
  • 适合移动设备的配置
  • 无需手动配置即可实现响应式行为

面板模板与标题 📄 references/panel-templates-headers.md

  • 使用 HeaderTemplate 设置面板标题和页眉
  • 使用 ContentTemplate 设置面板主要内容
  • 使用 CssClass 属性自定义样式
  • 在面板中渲染 HTML 和组件
  • 防止渲染空白区域

状态管理与持久化 📄 references/state-persistence.md

  • 使用 EnablePersistence 属性启用持久化
  • 集成 localStorage 以自动保存/恢复
  • 使用 GetPersistDataAsync 将当前状态作为字符串获取
  • 使用 SetPersistDataAsync 恢复已保存的状态
  • 使用 ResetPersistDataAsync 清除已保存的状态
  • 持久化需要组件 ID

API 参考 📄 references/api-reference.md

  • 完整的 SfDashboardLayout 组件 API 文档
  • 全部 14 个属性,包括类型、默认值和可接受的值
  • 全部 11 个方法,包括参数、返回类型和说明
  • 全部 8 个事件,包括参数类型和用法示例
  • DashboardLayoutPanel 组件属性(共 17 个)
  • 用于以编程方式提供面板数据的 PanelModel 类属性
  • 事件参数类及完整示例
  • ResizableHandle 枚举及全部 8 个方向值
  • 每个属性和方法的可运行代码示例
  • 相关文档的交叉引用

高级场景与故障排除 📄 references/advanced-scenarios.md

  • 在动态渲染中使用唯一 ID 防止面板重叠
  • 配置所有面板位于同一位置
  • 复杂布局的性能优化
  • 复杂的多面板显示模式
  • 常见问题和边缘情况的故障排除

快速入门示例

@using Syncfusion.Blazor.Layouts

<SfDashboardLayout CellSpacing="@(new double[]{10, 10})" Columns="5">
    <DashboardLayoutPanels>
        <DashboardLayoutPanel>
            <HeaderTemplate><div>Panel 1</div></HeaderTemplate>
            <ContentTemplate><div>Your content here</div></ContentTemplate>
        </DashboardLayoutPanel>
        <DashboardLayoutPanel SizeX=2 SizeY=2 Column=1>
            <HeaderTemplate><div>Panel 2</div></HeaderTemplate>
            <ContentTemplate><div>Your content here</div></ContentTemplate>
        </DashboardLayoutPanel>
        <DashboardLayoutPanel SizeY=2 Column=3>
            <HeaderTemplate><div>Panel 3</div></HeaderTemplate>
            <ContentTemplate><div>Your content here</div></ContentTemplate>
        </DashboardLayoutPanel>
    </DashboardLayoutPanels>
</SfDashboardLayout>

<style>
    .e-panel-header {
        background-color: rgba(0, 0, 0, .1);
        text-align: center;
    }
    .e-panel-content {
        text-align: center;
        margin-top: 10px;
    }
</style>

常见模式

基本的三面板仪表板

<SfDashboardLayout CellSpacing="@(new double[]{10, 10})" Columns="6">
    <DashboardLayoutPanels>
        <DashboardLayoutPanel SizeX=2>
            <HeaderTemplate><div>Metrics</div></HeaderTemplate>
            <ContentTemplate><div>250,000</div></ContentTemplate>
        </DashboardLayoutPanel>
        <DashboardLayoutPanel SizeX=2 Column=2>
            <HeaderTemplate><div>Users</div></HeaderTemplate>
            <ContentTemplate><div>45,200</div></ContentTemplate>
        </DashboardLayoutPanel>
        <DashboardLayoutPanel SizeX=2 Column=4>
            <HeaderTemplate><div>Revenue</div></HeaderTemplate>
            <ContentTemplate><div>$125,000</div></ContentTemplate>
        </DashboardLayoutPanel>
    </DashboardLayoutPanels>
</SfDashboardLayout>

支持拖放和调整大小

<SfDashboardLayout CellSpacing="@(new double[]{10, 10})" 
    Columns="6" 
    AllowDragging="true" 
    AllowResizing="true">
    
</SfDashboardLayout>

响应式移动端布局

<SfDashboardLayout CellSpacing="@(new double[]{10, 10})" 
    Columns="5" 
    MediaQuery="max-width:600px">
    
</SfDashboardLayout>

状态持久化模式

<SfDashboardLayout ID="dashboard" EnablePersistence="true" CellSpacing="@(new double[]{10, 10})">
    
</SfDashboardLayout>

关键属性参考

属性用途常见值
Columns每行的网格单元格数4、5、6、12
Row面板的垂直位置(从 0 开始)0、1、2、...
Column面板的水平位置(从 0 开始)0、1、2、...
SizeX面板宽度(以单元格计)1、2、3、...
SizeY面板高度(以单元格计)1、2、3、...
MinSizeX/MinSizeY最小尺寸限制1、2、...
MaxSizeX/MaxSizeY最大尺寸限制null(无限制)或指定值
CellSpacing面板间距(行、列)[10, 10]、[20, 20]
CellAspectRatio高宽比1、2、0.5
AllowDragging启用面板重新排列true、false
AllowResizing启用面板大小调整true、false
AllowFloating自动填充空白区域true、false
DraggableHandle拖动区域的 CSS 选择器".e-panel-header"
ResizableHandles调整大小的方向"e"(东)、"south-east" 等
MediaQuery移动端断点"max-width:600px"
EnablePersistence将状态保存到 localStoragetrue、false
ID唯一组件 ID(持久化必需)"dashboard"、"layout1"

使用场景示例

数据分析仪表板 使用仪表板网格搭配图表、网格和指标面板。启用大小调整功能,让用户能够专注于重要指标。

管理控制面板 在面板中组合多个 Syncfusion 组件(网格、图表、表单)。持久化布局,以便记住管理员的偏好设置。

SEO 监控仪表板 使用仪表板网格显示分析指标和图表。使用浮动面板,在面板移动时自动优化空间。

个人工作区 允许用户通过拖放、调整大小和持久化功能完全自定义布局,打造理想的工作区。

响应式移动端仪表板 针对桌面端进行设计,并使用 MediaQuery 断点,在移动端自动适配为单列堆叠布局。

评论

支持 Markdown