StackPanel是WPF中最简单和常用的布局控件之一,它可以将子元素按照水平或垂直方向依次排列。对于从WinForm转型到WPF的开发者来说,理解StackPanel的使用对掌握WPF布局系统至关重要。
XML<Window x:Class="AppStackPanel.MainWindow"
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:AppStackPanel"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<!-- 垂直方向的StackPanel -->
<StackPanel Margin="10">
<Button Content="按钮1" Height="30" Margin="0,0,0,5"/>
<Button Content="按钮2" Height="30" Margin="0,0,0,5"/>
<Button Content="按钮3" Height="30"/>
</StackPanel>
</Window>
XML<Window x:Class="AppStackPanel.MainWindow"
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:AppStackPanel"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<!-- 水平方向的StackPanel -->
<StackPanel Orientation="Horizontal" Margin="10">
<Button Content="按钮1" Width="100" Margin="0,0,5,0"/>
<Button Content="按钮2" Width="100" Margin="0,0,5,0"/>
<Button Content="按钮3" Width="100"/>
</StackPanel>
</Window>
XML<Window x:Class="AppStackPanel.MainWindow"
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:AppStackPanel"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<!-- 外层垂直StackPanel -->
<StackPanel Margin="10">
<!-- 标题 -->
<TextBlock Text="用户信息" FontSize="20" Margin="0,0,0,10"/>
<!-- 用户名输入区域 -->
<StackPanel Orientation="Horizontal" Margin="0,0,0,5">
<TextBlock Text="用户名:" Width="80" VerticalAlignment="Center"/>
<TextBox Width="200" Height="25"/>
</StackPanel>
<!-- 密码输入区域 -->
<StackPanel Orientation="Horizontal" Margin="0,0,0,5">
<TextBlock Text="密码:" Width="80" VerticalAlignment="Center"/>
<PasswordBox Width="200" Height="25"/>
</StackPanel>
<!-- 按钮区域 -->
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,10,0,0">
<Button Content="登录" Width="80" Height="30" Margin="0,0,10,0"/>
<Button Content="取消" Width="80" Height="30"/>
</StackPanel>
</StackPanel>
</Window>
XML<Window x:Class="AppStackPanel.MainWindow"
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:AppStackPanel"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<StackPanel Margin="10">
<!-- 顶部工具栏 -->
<StackPanel Orientation="Horizontal" Background="LightGray" Margin="5">
<Button Content="新建" Margin="0,0,5,0" Padding="5,2"/>
<Button Content="打开" Margin="0,0,5,0" Padding="5,2"/>
<Button Content="保存" Padding="5,2"/>
</StackPanel>
<!-- 主要内容区域 -->
<StackPanel Margin="0,10">
<!-- 表单组 -->
<GroupBox Header="个人信息" Padding="10">
<StackPanel>
<!-- 姓名输入 -->
<StackPanel Orientation="Horizontal" Margin="0,0,0,5">
<TextBlock Text="姓名:" Width="60" VerticalAlignment="Center"/>
<TextBox Width="200"/>
</StackPanel>
<!-- 年龄输入 -->
<StackPanel Orientation="Horizontal" Margin="0,0,0,5">
<TextBlock Text="年龄:" Width="60" VerticalAlignment="Center"/>
<TextBox Width="100"/>
</StackPanel>
<!-- 性别选择 -->
<StackPanel Orientation="Horizontal" Margin="0,0,0,5">
<TextBlock Text="性别:" Width="60" VerticalAlignment="Center"/>
<RadioButton Content="男" Margin="0,0,10,0"/>
<RadioButton Content="女"/>
</StackPanel>
</StackPanel>
</GroupBox>
<!-- 兴趣爱好 -->
<GroupBox Header="兴趣爱好" Margin="0,10" Padding="10">
<StackPanel Orientation="Horizontal">
<CheckBox Content="阅读" Margin="0,0,10,0"/>
<CheckBox Content="音乐" Margin="0,0,10,0"/>
<CheckBox Content="运动" Margin="0,0,10,0"/>
<CheckBox Content="游戏"/>
</StackPanel>
</GroupBox>
</StackPanel>
<!-- 底部按钮区域 -->
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,10,0,0">
<Button Content="提交" Width="80" Height="30" Margin="0,0,10,0"/>
<Button Content="重置" Width="80" Height="30"/>
</StackPanel>
</StackPanel>
</Window>
属性名 | 说明 | 默认值 |
---|---|---|
Orientation | 排列方向(Vertical/Horizontal) | Vertical |
Background | 背景色 | null |
Margin | 外边距 | 0 |
HorizontalAlignment | 水平对齐方式 | Stretch |
VerticalAlignment | 垂直对齐方式 | Stretch |
StackPanel是WPF中最基础的布局控件之一,掌握它的使用对于从WinForm转型到WPF的开发者来说非常重要。它简单易用,但同时也提供了足够的灵活性来创建复杂的用户界面。通过合理使用StackPanel,可以快速构建出清晰、整洁的界面布局。
希望本文的详细示例和说明能够帮助你更好地理解和使用WPF的StackPanel控件。在实际开发中,建议多尝试不同的布局方式,找到最适合你需求的解决方案。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!