【愚公系列】2023年10月 WPF控件专题 Groupbox控件详解

举报
愚公搬代码 发表于 2023/09/30 23:45:41 2023/09/30
【摘要】 WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。

原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见的标准用户界面元素。

自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。

🚀一、Groupbox控件详解

GroupBox控件是WPF(Windows Presentation Foundation)中一个常用的容器控件,可用于将一组相关的控件进行分组并提高可读性。

GroupBox控件通常包含一个标题,用于描述其所包含的控件。它可以通过设置Header属性来设置标题,也可以通过设置HeaderTemplate属性来自定义标题的显示方式。

GroupBox控件还可以使用不同的样式和模板进行自定义,以满足不同的设计和用户需求。可以使用样式和模板来改变GroupBox的边框样式、背景颜色、字体等属性。

下面是一个GroupBox控件的样例,其中包含一些文本框和按钮控件:

<GroupBox Header="Personal Information">
    <StackPanel Margin="10">
        <TextBlock Text="Name:"/>
        <TextBox/>
        <TextBlock Text="Age:"/>
        <TextBox/>
        <Button Content="Save"/>
    </StackPanel>
</GroupBox>

这里我们创建了一个GroupBox,标题为“Personal Information”,并包含了一些文本框和按钮。它们被放置在一个StackPanel中,用于控制它们的布局和对齐方式。

使用GroupBox控件可以使复杂的界面更加清晰和易于阅读,并且可以通过样式和模板来增强其可定制性。

🔎1.属性介绍

WPF中Groupbox控件的属性有:

  1. Header:用于设置GroupBox的标题文本。

  2. HeaderTemplate:用于设置GroupBox的标题模板,可以自定义GroupBox标题的样式。

  3. BorderBrush:用于设置GroupBox的边框颜色。

  4. BorderThickness:用于设置GroupBox的边框厚度。

  5. Background:用于设置GroupBox的背景颜色。

  6. Padding:用于设置GroupBox内部的空白区域。

  7. IsEnabled:用于设置GroupBox是否可用。

  8. IsTabStop:用于设置GroupBox是否可以被Tab键选中。

  9. FlowDirection:用于设置GroupBox的文本流向,可以是从左到右或从右到左。

  10. Margin:用于设置GroupBox与其父容器之间的边距。

  11. HorizontalContentAlignment:用于设置GroupBox中内容的水平对齐方式。

  12. VerticalContentAlignment:用于设置GroupBox中内容的垂直对齐方式。

  13. Template:用于设置GroupBox的外观模板,可以自定义GroupBox的外观样式。

🔎2.常用场景

WPF中Groupbox控件常用于以下场景:

  1. 分组:当需要将某些相关控件进行分组时,可以使用Groupbox控件,将它们放在一个框架中,给用户提供更好的可视化效果。
  2. 选项:当需要让用户在多个选项中进行选择时,可以将这些选项放在Groupbox控件中,以便用户更加方便地浏览和选择。
  3. 信息:当需要在界面上显示一组相关的信息时,可以使用Groupbox控件将这些信息进行分组显示。
  4. 布局:当需要对一组控件进行布局时,可以使用Groupbox控件作为容器,对其中的控件进行排列布局。

Groupbox控件常用于界面设计中的分组和布局,可以使界面更加直观、美观和易于使用。

🔎3.具体案例

<Window x:Class="WpfAppTest.GroupBoxWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfAppTest"
        mc:Ignorable="d"
        Title="GroupBoxWindow" Height="450" Width="800" Loaded="Window_Loaded">
        <Grid>
                <!-- 分组控件  内容控件   只能有一个元素作为它的Content
                     如果我想在它的内部呈放多个子元素????   ——布局控件   -容纳多个元素
                -->
                <GroupBox  Header="导航菜单"  Width="200"  Height="200" BorderThickness="2" BorderBrush="Red">
                        <StackPanel>
                                <Label Content="这是一个GroupBox控件"/>
                                <Label Content="这是一个GroupBox控件"/>
                                <Label Content="这是一个GroupBox控件"/>
                                <Label Content="这是一个GroupBox控件"/>
                        </StackPanel>
                </GroupBox>
                <GroupBox  Header="导航菜单2"  Width="221"  Height="200" BorderThickness="2" BorderBrush="Red" Margin="32,110,0,0" HorizontalAlignment="Left"  VerticalAlignment="Top" Name="gbInfo">
                        <StackPanel Orientation="Vertical" >
                                <StackPanel Orientation="Horizontal" >
                                        <Label Content="用户名:"/>
                                        <TextBox Name="txtUserName" Text="userName"  Width="150"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
                                        <Label Content="密码:"/>
                                        <PasswordBox Password="123456"  Width="150"/>
                                </StackPanel>
                        </StackPanel>
                </GroupBox>
        </Grid>
</Window>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
        //如果我们没有设置TextBox的name属性,通过GroupBox控件去获取
        StackPanel spFirst = gbInfo.Content as StackPanel;
        foreach(var ele in  spFirst.Children)
        {
                StackPanel sp = ele as StackPanel;
                foreach(var ele2 in sp.Children)
                {
                        if(ele2 is TextBox)
                        {
                                TextBox txt = ele2 as TextBox;
                                string name = txt.Text;
                        }
                }
        }

        string name1 = txtUserName.Text;//直接通过name属性获取控件的Text  
}

🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。