WPF学习-布局
1. Grid布局 ,(Table 布局)
两行两列布局,
Border 0 行 0 列默认开始
<Window x:Class="WpfApp.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:WpfApp"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Border Background="Red"></Border>
<Border Grid.Row="1" Background="Yellow"></Border>
<Border Grid.Column="1" Background="Blue"></Border>
<Border Grid.Row="1" Grid.Column="1" Background="Green"></Border>
</Grid>
</Window>
效果图:

2. StackPanel 布局
默认垂直布局 ,一旦超出区域限制后不限制
<StackPanel Orientation="Horizontal"> 改成水平排列
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
</StackPanel>
</Grid>
效果图:

3. WrapPanel 布局, ( float布局)
默认水平排序
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
</StackPanel>
<WrapPanel Grid.Row="1">
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
</WrapPanel>
</Grid>
效果:

4. DockPanel 停靠 (flex 布局)
默认横向填充,
<Grid>
<DockPanel>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
<Button Width="100" Height="40"/>
</DockPanel>
</Grid>
效果图:
默认横向填充, 最后一个元素占据整个布局, 居中显示.

停靠布局
注意设置: LastChildFill="False"
<Grid>
<DockPanel LastChildFill="False">
<Button Width="100" Height="40" DockPanel.Dock="Left"/>
<Button Width="100" Height="40" DockPanel.Dock="Top"/>
<Button Width="100" Height="40" DockPanel.Dock="Right"/>
<Button Width="100" Height="40" DockPanel.Dock="Bottom"/>
</DockPanel>
</Grid>
效果图:

5. Uniform 布局 (Table)
均分所有区域
设置三行三列布局
<UniformGrid Columns="3" Rows="3">
<Button></Button>
<Button></Button>
<Button></Button>
<Button></Button>
<Button></Button>
<Button></Button>
<Button></Button>
<Button></Button>
</UniformGrid>
效果图:

6. 布局Demo 案例
Border : 类似background 属性
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"></RowDefinition>
<RowDefinition ></RowDefinition>
</Grid.RowDefinitions>
<!--装饰器元素-->
<Border Background="#7671d8"></Border>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Border Background="Blue"></Border>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Border Margin="5" Background="#7671d8"></Border>
<Border Margin="5" Background="#429ecd" Grid.Column="1"></Border>
<Border Margin="5" Background="#7671d8" Grid.Column="2"></Border>
<Border Margin="5" Background="#5ac4b6" Grid.Column="3"></Border>
<Border Margin="5" Background="#d9707f" Grid.Column="4"></Border>
<Border Background="Red" Grid.Row="1" Grid.ColumnSpan="3" Margin="5">
</Border>
<Border Background="Yellow" Grid.Row="1" Grid.Column="3" Grid.ColumnSpan="2" Margin="5">
</Border>
<Border Grid.Row="2" Background="Blue" Margin="5" Grid.ColumnSpan="3"></Border>
<Border Grid.Row="2" Grid.ColumnSpan="2" Grid.Column="3" Background="Green" Margin="5"></Border>
</Grid>
</Grid>
</Grid>

7. 定义样式
<Window.Resources>
<Style x:Key="ButtonStyle" TargetType="Button">
<Setter Property="FontSize" Value="18"></Setter>
<Setter Property="Foreground" Value="White"></Setter>
<Setter Property="Background" Value="Red"></Setter>
<Setter Property="FontSize" Value="18"></Setter>
<Setter Property="Content" Value="Button1"></Setter>
</Style>
</Window.Resources>
<Grid>
<StackPanel >
<Button Style="{StaticResource ButtonStyle}" ></Button>
</StackPanel>
</Grid>
样式继承,使用 BasedOn 实现继承
<Window.Resources>
<Style x:Key="ButtonStyle" TargetType="Button">
<Setter Property="FontSize" Value="18"></Setter>
<Setter Property="Foreground" Value="White"></Setter>
<Setter Property="Background" Value="Red"></Setter>
<Setter Property="FontSize" Value="18"></Setter>
</Style>
<Style x:Key="ButtonStyle" TargetType="Button" BasedOn="{StaticResource ButtonStyle}">
<Setter Property="Content" Value="Button1"></Setter>
</Style>
</Window.Resources>
<Grid>
<StackPanel >
<Button Style="{StaticResource ButtonStyle}" ></Button>
</StackPanel>
</Grid>
控件模板控件模板控件模板控件模板控件模板控
WPF学习-布局的更多相关文章
- 迟到的 WPF 学习 —— 布局
布局是 WPF 很重头的一部分内容,这一部分梳理和记录关于布局章节的知识点. 1. WPF 使用一种基于流(Flow-based)的概念来处理布局逻辑,将传统的基于"坐标"的思想尽 ...
- WPF编程学习——布局
本文目录 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性 1.布局简介 应用程序界面设计中,合理的元素布局至关重要, ...
- WPF学习(3)布局
今天我们来说说WPF的布局.我们知道WinForm的布局主要是采用基于坐标的方式,当窗口内容发生变化时,里面的控件不会随之动态调整,这就造成了一个很不好的用户体验.而WPF为了避免这个缺点,采用了基于 ...
- WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)
时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码) 已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...
- WPF学习05:2D绘图 使用Transform进行控件变形
在WPF学习04:2D绘图 使用Shape绘基本图形中,我们了解了如何绘制基本的图形. 这一次,我们进一步,研究如何将图形变形. 例子 一个三角形,经Transform形成组合图形: XAML代码: ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- WPF学习拾遗(二)TextBlock换行
原文:WPF学习拾遗(二)TextBlock换行 下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧. 新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要 ...
- WPF(布局)
WPF编程学习——布局 本文目录 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性 1.布局简介 应用程序界面 ...
- Wpf之布局
Wpf之布局 上一章大家有了自己的一个Hello World的wpf程序,今天咱们就一起走进WPF,一起来看看wpF的前台xaml这门语言的魅力. 写过web 的人都知道布局这个概念,在web中布局和 ...
- WPF学习:3.Border & Brush
上一章<WPF学习:2.Layout-Panels-Countainers>主要介绍了布局,容器和面板.这一章主要开始介绍Border(边界)和Brush(画刷). 代码地址:http:/ ...
随机推荐
- 首次尝试SeaTunnel同步Doris至Hive?这些坑你不能不避
笔者使用SeaTunnel 2.3.2版本将Doris数据同步到Hive(cdh-6.3.2)首次运行时有如下报错,并附上报错的解决方案: java.lang.NoClassDefFoundError ...
- SMU Summer 2023 Contest Round 2
SMU Summer 2023 Contest Round 2 A. Treasure Hunt 当\(x1 - x2\)的差值与\(y1-y2\)的差值都能被\(x,y\)整除时,且商之和为2的倍数 ...
- Ubuntu 配置默认编辑器
在 Ubuntu 系统中,可以通过多种方式配置默认的文本编辑器,以便在使用命令行工具(如 crontab 或 visudo)时自动使用你喜欢的编辑器.以下是几种常见的方法: 使用 update-alt ...
- Docker的数据卷与数据卷容器操作
一.数据卷 数据卷(Data Volumes)是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount动作. 数据卷可以提供很多有用的特性: 数据卷可以在容器之 ...
- JavaScript 中 structuredClone 和 JSON.parse(JSON.stringify()) 克隆对象的区别
JavaScript 中 structuredClone 和 JSON.parse(JSON.stringify()) 克隆对象的异同点 一.什么是 structuredClone? 1. struc ...
- 知识增强深度学习及其应用:综述《Knowledge-augmented Deep Learning and Its Applications: A Survey》(下)
论文:Knowledge-augmented Deep Learning and Its Applications: A Survey GitHub: arXiv上的论文. (接着来) 4 用经验知识 ...
- Figma 学习笔记 – Align 对齐
Figma 有几个常用的对齐方法 从左到右 1. 左对齐 Alt + A 2.左右居中对齐 Alt + H 3.右对齐 Alt + D 4.上对齐 Alt + W 5.上下居中对齐 Alt + V 6 ...
- 三牧校队训练题目 Solution
前置知识: 搜索 队列 栈 递归 (提高难度)记忆化搜索 T1:P1226 [模板]快速幂 暴力想法:\(a\times a\) 进行 \(b\) 次,每次 \(a\times a\mod p\). ...
- 树状数组 java模板(纯代码)
public class TrieNums { int n; /*Nums start from 0*/ int[] storage; /*TrieNums index start from 1*/ ...
- laravel框架中保留条件搜索
前段代码 <form action="admin_index" method="get"> <input type="text&qu ...