0
点赞
收藏
分享

微信扫一扫

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

(文章目录)

前言

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
}
举报

相关推荐

0 条评论