You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WinUI3页面中创建Sections/Panels(区块/面板)

WinUI3 带标题圆角区块实现方案

针对你想在WinUI3页面中创建类似官方示例里的带标题、圆角框的区块需求,结合你有WinForms使用经验的背景,整理以下核心控件和实现思路:

核心可用控件

  • Expander:自带标题栏+可折叠内容区,默认样式就带圆角和阴影,完美匹配官方示例的区块风格,是最省心的选择。
  • GroupBox:传统分组控件,自带标题,但默认没有圆角,需要自定义模板实现,适合不需要折叠功能的静态区块。
  • Border:基础布局控件,可自由搭配TextBlock做标题,通过CornerRadius属性直接设置圆角,自由度最高,适合高度定制的场景。

具体实现方式

1. 用Expander快速实现(推荐)

直接使用Expander控件,设置Header为区块标题,内容区放入你需要的布局控件(如StackPanel、Grid)即可,默认样式就符合要求:

<Expander Header="示例区块标题" Margin="10" CornerRadius="8">
    <StackPanel Padding="10">
        <!-- 这里放置区块内的内容控件 -->
        <TextBlock Text="区块内的演示内容"/>
    </StackPanel>
</Expander>

2. 用GroupBox做静态分组区块

GroupBox默认标题在边框上方,要添加圆角需要修改其控件模板,示例代码如下:

<GroupBox Header="静态区块标题" Margin="10">
    <GroupBox.Template>
        <ControlTemplate TargetType="GroupBox">
            <Border CornerRadius="8" 
                    BorderBrush="{TemplateBinding BorderBrush}" 
                    BorderThickness="{TemplateBinding BorderThickness}" 
                    Background="{TemplateBinding Background}">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <ContentPresenter Content="{TemplateBinding Header}" 
                                      Margin="10,0,0,0" 
                                      VerticalAlignment="Top"/>
                    <ContentPresenter Grid.Row="1" 
                                      Margin="10" 
                                      Content="{TemplateBinding Content}"/>
                </Grid>
            </Border>
        </ControlTemplate>
    </GroupBox.Template>
    <StackPanel Padding="5">
        <TextBlock Text="静态区块的内容"/>
    </StackPanel>
</GroupBox>

3. 用Border完全自定义区块

如果需要特殊的标题布局、颜色或样式,用Border组合TextBlock实现完全自定义:

<Border Margin="10" 
        CornerRadius="8" 
        BorderBrush="Gray" 
        BorderThickness="1" 
        Background="#F5F5F5">
    <StackPanel>
        <TextBlock Text="自定义区块标题" 
                   Padding="10,10,10,0" 
                   FontWeight="Bold"/>
        <Border BorderBrush="LightGray" 
                BorderThickness="0,1,0,0" 
                Margin="10,0"/>
        <StackPanel Padding="10,8">
            <TextBlock Text="自定义的区块内容"/>
        </StackPanel>
    </StackPanel>
</Border>

方向建议

  • 优先选Expander:如果需要折叠/展开功能,或者想快速匹配官方示例风格,Expander自带的设计样式无需额外调整,直接用就能出效果。
  • 静态区块选GroupBox:如果不需要折叠功能,GroupBox的语义更清晰,修改模板添加圆角即可。
  • 高度定制用Border:如果要做特殊的标题位置、阴影效果或配色,Border能完全满足你的定制需求。
  • 参考官方模板:可以在Visual Studio的控件模板编辑器中查看Expander、GroupBox的默认模板,学习微软的设计规范,方便后续自定义样式。

内容的提问来源于stack exchange,提问作者SamuraiMelon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:43:00