• WPF 控件专题 GroupBox控件详解


    1、GroupBox 介绍

        GroupBox 表示一个控件,该控件用于创建具有用户界面 (UI) 内容边框和标题的容器。

        GroupBox 只能包含一个子元素,但这没问题——只需将这个控件设置为面板,您就可以自由地向面板添加多个控件。

    **************************************************************************************************************

    2、常用属性介绍

        FontFamily:字体系列;    FontSize:字体大小;    FontStretch:字体在屏幕上紧缩或加宽的程度;FontWeight:字体粗细;
        
        Background:背景;    BorderBrush:边框颜色;    BorderThickness:边框宽度;    Foreground:前景色;
        
        Width/Height:宽度/高度;    Name:元素标识名称;    IsEnabled:使能,是否可用;    Margin:外边距;
        
        Opacity:透明度;    Visibility:可见性;    IsVisible:是否可见;    FlowDirection:其子元素的流动方向;
        
        LayoutTransform:在执行布局时应该应用于此元素的图形转换方式。    RenderTransform:元素的呈现位置的转换信息;
        
        RenderTransformOrigin:由RenderTransform声明的任何可能呈现转换的中心点,相对于元素的边界。
        
        HorizontalAlignment/VerticalAlignment:在父元素中组合此元素时所应用的水平对齐特征/垂直对齐特征。
        
        HorizontalContentAlignment/VerticalContentAlignment:控件内容的水平对齐方式/垂直对齐方式。

        Content:获取或设置 ContentControl 的内容。
        
        Header:获取或设置每个控件的标题所用的数据。

    **************************************************************************************************************

    3、具体示例

    Style代码

    1. <Style TargetType="{x:Type GroupBox}" x:Key="Group">
    2. <Setter Property="Margin" Value="5"/>
    3. <Setter Property="Template">
    4. <Setter.Value>
    5. <ControlTemplate TargetType="{x:Type GroupBox}">
    6. <Grid >
    7. <Grid.RowDefinitions>
    8. <RowDefinition Height="Auto" />
    9. <RowDefinition Height="*" />
    10. Grid.RowDefinitions>
    11. <Border x:Name="border" Grid.Row="0" SnapsToDevicePixels="True" BorderBrush="{TemplateBinding Background}" Background="{TemplateBinding Background}" HorizontalAlignment="Stretch" BorderThickness="0" CornerRadius="2,2,0,0" >
    12. <Grid Margin="5">
    13. <ContentPresenter Name="header" Visibility="Collapsed" ContentSource="Header" RecognizesAccessKey="True" HorizontalAlignment="Left" VerticalAlignment="Center"/>
    14. <TextBlock FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" Text="{Binding ElementName=header, Path=Content}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
    15. Grid>
    16. Border>
    17. <Border Grid.Row="1" BorderBrush="{TemplateBinding Background}" SnapsToDevicePixels="True" BorderThickness="1,0,1,1" CornerRadius="0,0,2,2" >
    18. <ContentPresenter Margin="10" x:Name="cpmdi" />
    19. Border>
    20. Grid>
    21. <ControlTemplate.Triggers>
    22. <Trigger Property="Header" Value="{x:Null}">
    23. <Setter TargetName="cpmdi" Property="Margin" Value="10"/>
    24. <Setter TargetName="border" Property="Height" Value="32"/>
    25. Trigger>
    26. ControlTemplate.Triggers>
    27. ControlTemplate>
    28. Setter.Value>
    29. Setter>
    30. Style>

    使用样式示例

    1. <WrapPanel Margin="10">
    2. <GroupBox Margin="10" Header="GroupBox自定义示例" MinWidth="200" FontSize="15" FontFamily="思源黑体" HorizontalAlignment="Left" >
    3. <StackPanel >
    4. <Button Margin="0,10" Height="30" Content="相思相见知何日"/>
    5. <TextBox Text=" 相思相见知何日,此时此夜难为情" Margin="0 10" Foreground="#dddddd"/>
    6. StackPanel>
    7. GroupBox>
    8. <GroupBox Margin="10" Header="GroupBox自定义示例" MinWidth="200" FontSize="15" FontFamily="思源黑体" HorizontalAlignment="Left" Foreground="Red" Style="{StaticResource Group}" Background="Teal">
    9. <StackPanel >
    10. <Button Margin="0,10" Height="30" Content="相思相见知何日"/>
    11. <TextBox Text=" 相思相见知何日,此时此夜难为情" Margin="0 10" Foreground="#dddddd"/>
    12. StackPanel>
    13. GroupBox>
    14. WrapPanel>

    **************************************************************************************************************

    4、效果图

        左侧为原生态的GroupBox效果图,右侧是使用Style样式的显示效果图;

    **************************************************************************************************************

    5、总结和扩展

        原生态的GroupBox样式还是挺难看的,建议使用时进行样式改写,比如头部变圆角等。

    **************************************************************************************************************

  • 相关阅读:
    Win10 如何删除系统盘大文件hiberfil.sys
    嵌入式系统设计中时钟抖动的基础
    10天学完React——03、组件之间的props通信
    学习笔记2--自动驾驶汽车关键技术
    K8s 搭建一主一从
    海思3559万能平台搭建:RTSP实时播放的优化
    Linux 安装 Redis 教程
    Linguistic Steganalysis in Few-Shot Scenario论文阅读笔记
    LM小型可编程控制器软件(基于CoDeSys)笔记二十七:温度电阻通道和DO通道
    controller、service、Dao是否是线程安全的?
  • 原文地址:https://blog.csdn.net/BYH371256/article/details/125488075