首页 > 其他分享 >【愚公系列】2023年09月 WPF控件专题 Groupbox控件详解

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

时间:2023-09-13 23:03:15浏览次数:31  
标签:控件 自定义 09 Groupbox 设置 GroupBox WPF

(文章目录)


前言

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  
}

标签:控件,自定义,09,Groupbox,设置,GroupBox,WPF
From: https://blog.51cto.com/u_15437432/7465278

相关文章

  • 2023.09.13
      今天学习了java关于类与对象的知识,包括方法,对象,构造函数,继承,封装的学习,以及this关键字的学习1、程序    为了完成现实世界的某个功能或者任务而编写的一系列有序代码的集合2、面向对象编程--oop用对象的方式来模拟现实世界---软件3、对象  对象是类的实例4......
  • 【230913-2】将1,2,3,4,5,6,7排成先减后增的序列,共有几种排法?
    【数学思路】初看这个问题,似乎抓不到头绪,但抓住1这个关键点后,问题便迎刃而解了。1这个数,在排列好的序列中,必然处于波谷位置,其左边的数呈递减趋势,右边的数呈递增趋势,都比1大。既然是波谷,1就不可能处于序列的首位或末位,只能在中间。至此,问题就变成了:从2,3,4,5,6,7中选择若干数排到1的左右......
  • 2023-09-13:用go语言,给定一个整数数组 nums 和一个正整数 k, 找出是否有可能把这个数组
    2023-09-13:用go语言,给定一个整数数组nums和一个正整数k,找出是否有可能把这个数组分成k个非空子集,其总和都相等。输入:nums=[4,3,2,3,5,2,1],k=4。输出:True。来自左程云。答案2023-09-13:第一种算法(canPartitionKSubsets1)使用动态规划的思想,具体过程如下:1.计算数组......
  • 2023-09-13:用go语言,给定一个整数数组 nums 和一个正整数 k, 找出是否有可能把这个数组
    2023-09-13:用go语言,给定一个整数数组nums和一个正整数k,找出是否有可能把这个数组分成k个非空子集,其总和都相等。输入:nums=[4,3,2,3,5,2,1],k=4。输出:True。来自左程云。答案2023-09-13:第一种算法(canPartitionKSubsets1)使用动态规划的思想,具体过程如下:1.......
  • 09 类加载的内存分析
    packageannotate;publicclassTest09{publicstaticvoidmain(String[]args){System.out.println(newA().a);}}classA{static{a=300;}staticinta=100;}......
  • 09-程序的构成
           ......
  • 2023短学期0913题解
    将字符串作为输入流来处理(提取单词)【C系列4.7】函数训练之暗号Descriptioncyn小朋友今天参加了小学举办的侦探活动,她的任务是从暗号纸条的内容上找出特工Q给出的所有的暗号(即Q开头的单词)Input输入一串含有空格的字符串,字符串的长度不超过300。Output按顺序每行......
  • 界面控件DevExpress WPF TreeMap,轻松可视化复杂的分层结构数据!
    DevExpressWPF TreeMap控件允许用户使用嵌套的矩形块可视化复杂的平面或分层结构数据。P.S:DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的......
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(3)--自定义用
    在我们创建界面元素的时候,不管在Vue3+ElementPlus的前端上,还是Winform桌面端上,都是会利用自定义用户控件来快速重用一些自定义的界面内容,对自定义用户控件的封装处理,也是我们开发WPF应用需要熟悉的一环。本篇随笔继续深入介绍介绍基于CommunityToolkit.Mvvm和HandyControl的WPF应......
  • 锁表查询,转载 https://www.toutiao.com/article/7275538336188695099/?channel=&sourc
    Oracle死锁与慢查询总结 查看死锁SELECTs.sid"会话ID",s.lockwait"等待锁",s.event"等待的资源/事件",--最近等待或正在等待的资源/事件DECODE(lo.locked_mode,0,'尚未获得锁',1,NULL,2,'行共享锁',3,'行排它锁',4,'共享表锁',5,�......