mcpField
S
syncfusion-winforms-tile-layout

syncfusion-winforms-tile-layout

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

关于 syncfusion-winforms-tile-layout

此参考技能介绍使用 Syncfusion WinForms TileLayout 构建磁贴界面,适合需要分组和重排磁贴的 Windows Forms 开发者,也涵盖轮播图像或文本的磁贴。

主要功能

  1. 01使用 LayoutGroups 分组磁贴
  2. 02显示 ImageStreamer 轮播内容
  3. 03通过拖放重排磁贴
  4. 04设置边距与对齐方式
  5. 05自定义分组和磁贴背景

适用场景

  1. 01创建分组式应用启动器
  2. 02构建动态磁贴仪表板
  3. 03在画廊中轮播图像
  4. 04按类别排列磁贴

安装

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

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

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

包含的文件

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

references/
appearance-styling.md
drag-and-drop.md
getting-started.md
image-streamer-tiles.md
layout-customization.md

详细介绍

在 Syncfusion WinForms 中实现 TileLayout

本技能将指导你实现 Syncfusion WinForms TileLayout 控件——一种受 Windows 8「开始」屏幕启发的容器,可容纳按组组织的磁贴项,支持拖放重新排序、带旋转内容的动态磁贴,以及灵活的布局自定义。

何时使用此技能

当用户需要以下功能时,请使用此技能:

  • 创建包含分组磁贴的 Windows 8 Metro 风格磁贴界面
  • 实现可拖动、可重新排列磁贴的 仪表板布局
  • 使用 ImageStreamer 构建带有旋转图像或文本的 动态磁贴显示
  • 设计按逻辑类别(LayoutGroups)组织的 分组磁贴容器
  • 添加运行时在组内或组间重新排列磁贴的 拖放功能
  • 创建可自定义边距、对齐方式和位置的 磁贴布局
  • 实现采用磁贴导航的 现代化触控友好界面
  • 构建采用磁贴菜单的 应用启动器或开始屏幕
  • 以磁贴形式显示照片库或媒体合集
  • 创建包含多个信息磁贴的状态仪表板

TileLayout 非常适合需要灵活、可视化、基于磁贴的界面的现代应用,类似于 Windows 8/10「开始」屏幕。

组件概述

TileLayout 是一种容器控件,用于管理按 LayoutGroups 组织的磁贴集合。每个 LayoutGroup 都包含充当独立磁贴的 ImageStreamer 项。该控件提供:

  • LayoutGroups:逻辑分组的磁贴,可选择显示标题
  • ImageStreamer 项:可显示旋转图像或文本的动态磁贴
  • 拖放:在运行时于组内或组间重新排列磁贴
  • 布局自定义:边距、对齐方式、行方向控制
  • 外观选项:主题、平面父窗体、组标题显示
  • 矩阵定位:在响应式网格中自动排列磁贴

关键层级结构:

TileLayout (Container)
└── LayoutGroup(s) (Groups)
    └── ImageStreamer(s) (Individual Tiles)

文档与导航指南

入门与基本设置

📄 阅读: references/getting-started.md

当用户需要以下内容时,请阅读此参考文档:

  • 所需的程序集依赖项和 NuGet 包
  • 通过设计器或代码创建 TileLayout
  • 添加 LayoutGroups 以组织磁贴
  • 向组中添加 ImageStreamer 项
  • 首次实现所需的基本配置
  • 完整的最小可运行示例
  • 了解 TileLayout 层级结构
布局自定义

📄 阅读: references/layout-customization.md

当用户需要以下内容时,请阅读此参考文档:

  • Alignment 属性(Near、Far、Center)
  • 水平边距(HorzNearMargin、HorzFarMargin)
  • 垂直边距(TopMargin、BottomMargin)
  • 使用 ReverseRows 更改布局方向
  • MainLayout 属性配置
  • 自定义位置和间距
  • 响应式布局行为
外观与样式

📄 阅读: references/appearance-styling.md

当用户需要以下内容时,请阅读此参考文档:

  • 使用 SetParentFormFlat 设置平面窗体外观
  • 使用 ShowGroupTitle 显示组名称
  • 使用 IgnoreThemeBackground 设置自定义 BackColor
  • 主题集成与样式设置
  • 视觉自定义选项
  • 专业外观配置
ImageStreamer 动态磁贴

📄 阅读: references/image-streamer-tiles.md

当用户需要以下内容时,请阅读此参考文档:

  • 向 ImageStreamer 磁贴添加图像
  • 使用 SlideShow 和 SliderSpeed 设置动画
  • 使用 ShowNavigator 显示导航控件
  • ImageStreamDirection(5 个方向:LeftToRight、RightToLeft、TopToBottom、BottomToTop、HorizontalFlip)
  • ImageStreamerType(Normal 与 DoubleHorizontal)
  • 使用 InternalBackColor 设置磁贴背景
  • 创建包含图像或文本的动态旋转磁贴
  • 配置磁贴动画和过渡效果
拖放

📄 阅读: references/drag-and-drop.md

当用户需要以下功能时,请阅读此参考文档:

  • 在 LayoutGroups 内拖放
  • 在不同组之间拖放
  • 由用户在运行时重新排列磁贴
  • 用户交互模式
  • 限制和最佳实践

快速入门示例

下面是一个创建包含两个组和实时磁贴的 TileLayout 的最简示例:

using Syncfusion.Windows.Forms.Tools;
using System;
using System.Drawing;
using System.Windows.Forms;

public class TileLayoutExample : Form
{
    private TileLayout tileLayout1;
    private LayoutGroup layoutGroup1;
    private LayoutGroup layoutGroup2;
    private ImageStreamer imageStreamer1;
    private ImageStreamer imageStreamer2;
    
    public TileLayoutExample()
    {
        // Create TileLayout
        tileLayout1 = new TileLayout();
        tileLayout1.Dock = DockStyle.Fill;
        tileLayout1.ShowGroupTitle = true;
        
        // Create first LayoutGroup
        layoutGroup1 = new LayoutGroup();
        layoutGroup1.Text = "Photos";
        layoutGroup1.BackColor = ColorTranslator.FromHtml("#8C6FF5");
        
        // Create second LayoutGroup
        layoutGroup2 = new LayoutGroup();
        layoutGroup2.Text = "Documents";
        layoutGroup1.BackColor = ColorTranslator.FromHtml("#8C6FF5");
        
        // Create ImageStreamer tiles with images
        imageStreamer1 = new ImageStreamer();
        imageStreamer1.SlideShow = true;
        imageStreamer1.SliderSpeed = 100;
        imageStreamer1.Images.Add(Image.FromFile("image1.jpg"));
        imageStreamer1.Images.Add(Image.FromFile("image2.jpg"));
        
        imageStreamer2 = new ImageStreamer();
        imageStreamer2.InternalBackColor = Color.LightBlue;
        imageStreamer2.Images.Add(Image.FromFile("doc1.png"));
        
        // Add ImageStreamers to LayoutGroups
        layoutGroup1.Controls.Add(imageStreamer1);
        layoutGroup2.Controls.Add(imageStreamer2);
        
        // Add LayoutGroups to TileLayout
        tileLayout1.Controls.Add(layoutGroup1);
        tileLayout1.Controls.Add(layoutGroup2);
        
        // Add TileLayout to form
        this.Controls.Add(tileLayout1);
        this.Size = new Size(800, 600);
        this.Text = "TileLayout Example";
    }
}

结果: 一个包含两个组(“照片”和“文档”的磁贴布局,每组都包含带旋转图片的实时磁贴。

常见模式

包含多个磁贴组的仪表板

模式: 创建包含多个分组区域的仪表板,用于展示不同类型的内容。

// Create main TileLayout
var tileLayout = new TileLayout();
tileLayout.Dock = DockStyle.Fill;
tileLayout.ShowGroupTitle = true;
tileLayout.MainLayout.TopMargin = 20;
tileLayout.MainLayout.HorzNearMargin = 20;

// Create groups for different categories
var socialGroup = new LayoutGroup { Text = "Social" };
var newsGroup = new LayoutGroup { Text = "News" };
var mediaGroup = new LayoutGroup { Text = "Media" };

// Add multiple tiles to each group
for (int i = 0; i < 4; i++)
{
    var tile = new ImageStreamer();
    tile.Images.Add(GetImage($"social{i}.png"));
    tile.SlideShow = true;
    socialGroup.Controls.Add(tile);
}

tileLayout.Controls.Add(socialGroup);
tileLayout.Controls.Add(newsGroup);
tileLayout.Controls.Add(mediaGroup);

适用场景: 用户需要一个包含多个磁贴类别、组织有序的仪表板。

带自定义动画的实时磁贴

模式: 配置 ImageStreamer 磁贴,以轮播内容并自定义动画方向。

// Create live tile with multiple images
var liveTile = new ImageStreamer();
liveTile.SlideShow = true;
liveTile.SliderSpeed = 150; // Slower animation
liveTile.ShowNavigator = true; // Show navigation arrows
liveTile.ImageStreamDirection = ImageStreamer.StreamDirection.BottomToTop;

// Add multiple images for rotation
liveTile.Images.Add(Image.FromFile("slide1.png"));
liveTile.Images.Add(Image.FromFile("slide2.png"));
liveTile.Images.Add(Image.FromFile("slide3.png"));
liveTile.InternalBackColor = Color.FromArgb(0, 120, 215); // Modern blue

layoutGroup.Controls.Add(liveTile);

适用场景: 用户需要内容自动轮播的磁贴(新闻源、照片集、状态显示)。

自定义布局位置

模式: 使用自定义边距和对齐方式控制磁贴布局。

// Configure MainLayout for custom positioning
tileLayout.MainLayout.Alignment = FlowAlignment.Center;
tileLayout.MainLayout.HorzNearMargin = 50;  // Left margin
tileLayout.MainLayout.HorzFarMargin = 50;   // Right margin
tileLayout.MainLayout.TopMargin = 30;       // Top margin
tileLayout.MainLayout.BottomMargin = 30;    // Bottom margin
tileLayout.MainLayout.ReverseRows = false;  // Standard flow

适用场景: 用户需要居中布局、自定义间距或特定位置。

关键属性

TileLayout 属性
属性类型描述使用场景
ShowGroupTitlebool显示/隐藏组标题在组上方显示类别名称
SetParentFormFlatbool将扁平外观应用于父窗体实现现代、简约的外观
IgnoreThemeBackgroundbool使用 BackColor,而非主题背景自定义背景颜色
MainLayout.AlignmentFlowAlignmentNear、Center、Far 对齐方式控制磁贴组的位置
MainLayout.HorzNearMarginint左边距(像素)自定义左侧间距
MainLayout.HorzFarMarginint右边距(像素)自定义右侧间距
MainLayout.TopMarginint上边距(像素)自定义顶部间距
MainLayout.BottomMarginint下边距(像素)自定义底部间距
MainLayout.ReverseRowsbool反转布局方向从右向左或从下向上排列
LayoutGroup 属性
属性类型描述使用场景
Textstring组标题文本标记磁贴类别
BackColorColor组背景颜色区分不同的组
ItemsCollection组中的 ImageStreamer 项访问/管理组中的磁贴
ImageStreamer(磁贴)属性
属性类型描述使用场景
ImagesImageCollection要显示的图片集合为实时磁贴添加图片
SlideShowbool启用图片轮播使用多张图片为磁贴添加动画
SliderSpeedint动画速度(毫秒)控制轮播速度
ShowNavigatorbool显示导航箭头允许手动切换图片
ImageStreamDirectionStreamDirection动画方向控制幻灯片切换方向
TypeImageStreamerTypeNormal 或 DoubleHorizontal显示 1 张或 2 张图片
InternalBackColorColor磁贴背景颜色自定义单个磁贴的颜色

常见使用场景

应用启动器

创建 Windows 8 风格的开始屏幕,使用应用磁贴:

  • 按类别对应用分组(生产力、媒体、游戏)
  • 每个磁贴显示应用图标
  • 点击磁贴以启动应用程序
  • 拖放以重新排列收藏项
照片库仪表板

以磁贴形式展示照片集:

  • 按相册/日期对照片分组
  • ImageStreamer 轮播照片
  • 使用 SlideShow 自动轮播
  • 点击以查看全尺寸图片
状态监控仪表板

使用实时磁贴显示实时状态:

  • 按系统/服务类型分组
  • 磁贴显示当前状态/指标
  • 使用新数据自动更新
  • 使用颜色区分状态(绿色/黄色/红色)
新闻/社交信息流聚合器

显示多个内容信息流:

  • 按信息流来源分组(新闻、Twitter、RSS)
  • 磁贴轮播显示近期内容
  • 点击磁贴可打开完整文章
  • 按间隔自动刷新

实现清单

实现 TileLayout 时,请确保:

  • ✅ 引用必需的程序集(Syncfusion.Tools.Windows.dll 等)
  • ✅ 创建 TileLayout 并将其添加到窗体(通常设置为停靠)
  • ✅ 添加 LayoutGroups,按类别组织磁贴
  • ✅ 将 ImageStreamer 项目作为磁贴添加到 LayoutGroups
  • ✅ 将图像加载到 ImageStreamer.Images 集合中
  • ✅ 配置 SlideShow/SliderSpeed,用于实时磁贴
  • ✅ 根据需要自定义布局边距/对齐方式
  • ✅ 根据需要显示/隐藏组标题
  • ✅ 启用拖放(默认行为)
  • ✅ 根据需要添加磁贴点击事件处理程序

故障排除快速参考

问题: 磁贴未显示

  • 确保 ImageStreamer.Images 集合中至少有一张图像
  • 检查 LayoutGroup.Controls 是否包含 ImageStreamer 实例
  • 验证 TileLayout.Controls 是否包含 LayoutGroups

问题: SlideShow 未播放动画

  • 设置 ImageStreamer.SlideShow = true
  • 确保 Images 集合中有多张图像
  • 检查 SliderSpeed 是否为合理值(50-200 ms)

问题: 拖放不起作用

  • 默认情况下已启用拖放
  • 确保未处理冲突的鼠标事件
  • 检查磁贴是否为 ImageStreamer 控件,而非其他类型

问题: 布局未正确居中/对齐

  • 使用 MainLayout.Alignment 属性
  • 调整 HorzNearMargin/HorzFarMargin 以设置水平位置
  • 设置 TopMargin/BottomMargin 以调整垂直间距

问题: 主题背景覆盖了自定义颜色

  • 设置 IgnoreThemeBackground = true
  • 然后将自定义 BackColor 应用于 TileLayout/LayoutGroups

评论

支持 Markdown