📜  WPF-布局(1)

📅  最后修改于: 2023-12-03 15:21:16.091000             🧑  作者: Mango

WPF布局

Windows Presentation Foundation (WPF) 是一种用于开发 Windows 客户端应用程序的 UI 框架。其中,布局是 WPF GUI 中的一个重要部分。本文将向您介绍 WPF 中的常见布局和使用方式。

常见布局
1. StackPanel

StackPanel 是将其子元素堆叠在一起的简单布局控件,可以选择垂直或水平排列。此控件可以根据需要自动扩展以适应其内容。

<StackPanel Orientation="Vertical">
    <!-- Your content here -->
</StackPanel>
2. Grid

网格是一种功能强大的控件,可帮助您获得更精确的布局和定位控件。Grid 包含多个行和列,在每个交点处,您可以放置控件。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <!-- Your content here -->
</Grid>
3. DockPanel

DockPanel 是一种容器布局控件,可以通过将其子元素停靠在其中一个边框上来进行布局。

<DockPanel>
    <!-- Your content here -->
    <Button DockPanel.Dock="Top" Content="Top"/>
    <Button DockPanel.Dock="Left" Content="Left"/>
    <Button DockPanel.Dock="Right" Content="Right"/>
    <Button DockPanel.Dock="Bottom" Content="Bottom"/>
</DockPanel>
4. WrapPanel

WrapPanel 是一种流布局控件,其子元素可以自动换行以适应控件大小。

<WrapPanel>
    <!-- Your content here -->
</WrapPanel>
使用方式
1. XAML 布局

在 XAML 中使用布局控件是最常见的方法,这使得可视化设计和手动代码编写都非常方便。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <StackPanel Grid.Row="0">
        <Button Content="Button 1"/>
        <Button Content="Button 2"/>
        <Button Content="Button 3"/>
    </StackPanel>
    <WrapPanel Grid.Row="1">
        <Button Content="Button 4"/>
        <Button Content="Button 5"/>
        <Button Content="Button 6"/>
        <Button Content="Button 7"/>
        <Button Content="Button 8"/>
        <Button Content="Button 9"/>
        <Button Content="Button 10"/>
    </WrapPanel>
</Grid>
2. 代码方式

通过代码中创建和配置布局控件,您可以以编程方式控制 UI。

var grid = new Grid();
grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });

var stackPanel = new StackPanel();
stackPanel.SetValue(Grid.RowProperty, 0);
stackPanel.Children.Add(new Button() { Content = "Button 1" });
stackPanel.Children.Add(new Button() { Content = "Button 2" });
stackPanel.Children.Add(new Button() { Content = "Button 3" });

var wrapPanel = new WrapPanel();
wrapPanel.SetValue(Grid.RowProperty, 1);
wrapPanel.Children.Add(new Button() { Content = "Button 4" });
wrapPanel.Children.Add(new Button() { Content = "Button 5" });
wrapPanel.Children.Add(new Button() { Content = "Button 6" });
wrapPanel.Children.Add(new Button() { Content = "Button 7" });
wrapPanel.Children.Add(new Button() { Content = "Button 8" });
wrapPanel.Children.Add(new Button() { Content = "Button 9" });
wrapPanel.Children.Add(new Button() { Content = "Button 10" });

grid.Children.Add(stackPanel);
grid.Children.Add(wrapPanel);

Content = grid;
总结

WPF 支持多种布局控件,包括 StackPanel、Grid、DockPanel 和 WrapPanel。您可以使用 XAML 或代码的方式创建和配置这些控件,以实现 UI 的灵活布局。