WPF学习——布局
来源:互联网 发布:sql数据库安装步骤 编辑:程序博客网 时间:2024/05/31 19:52
WPF布局
所有WPF布局容器都是派生子System.Windows.Controls.Panel抽象类的面板
Panel类的共有属性: Background,Children,IsItemsHost
核心布局面板:StackPanel、WrapPanel、DockPanel、Grid、UniformGrid、Canvas
一、使用StackPanel布局
StackPanel是最简单的布局容器之一。该面板简单地在单行或单列中以堆栈形式放置子元素
<span style="font-size:18px;"><Window x:Class="LayOut.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="280" Width="305"> <StackPanel> <Label Content="StackPanel" HorizontalAlignment="Center" FontSize="20"></Label> <Button Content="button1" Height="30" Margin="5"></Button> <Button Content="button2" Height="30" Margin="5"></Button> <Button Content="button3" Height="30" Margin="5"></Button> <Button Content="button4" Height="30" Margin="5"></Button> <Button Content="button5" Height="30" Margin="5"></Button> </StackPanel> </Window></span>
Border控件常和Panel面板一块儿使用
<Window x:Class="LayOut.border" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="border" Height="300" Width="300"> <Border Height="180" Width="260" Margin="5" Padding="5" Background="LightBlue" BorderBrush="SteelBlue" BorderThickness="3" CornerRadius="4"> <StackPanel> <Label Content="StackPanel Border " HorizontalAlignment="Center" FontSize="20"></Label> <Button Content="button1" Height="30" Margin="5" MinWidth="100" MaxWidth="200"></Button> <Button Content="button2" Height="30" Margin="5"></Button> <Button Content="button3" Height="30" Margin="5"></Button> </StackPanel> </Border></Window>
二、使用WarpPanel布局
WrapPanel面板在空间中以一次一行或一列的方式布置控件,默认从左往右排列,再在下一行排列。可通过设置WrapPanel.Oritentation属性设置排列方向(Horizontal和Vertical)
<Window x:Class="WarpPanel.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="210" Width="433"> <WrapPanel> <Button VerticalAlignment="Top">Top Button</Button> <Button MinHeight="60">Tall Button</Button> <Button VerticalAlignment="Bottom">Bottom Button</Button> <Button>Stretch Button</Button> <Button VerticalAlignment="Center">Center Button</Button> </WrapPanel></Window>
三、使用DockPanel布局
<Window x:Class="DockPanel.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="235" Width="328"> <DockPanel LastChildFill="True"> <Button DockPanel.Dock="Top" >Top Button</Button> <Button DockPanel.Dock="Bottom">Bottom Button</Button> <Button DockPanel.Dock="Left">Left Button</Button> <Button DockPanel.Dock="Right">Right Button</Button> <Button>Remaining Space</Button> </DockPanel></Window>
四、StackPanel、WrapPanel、DockPanel嵌套布局
<Window x:Class="Nesting.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="266" Width="407"> <DockPanel LastChildFill="True"> <StackPanel DockPanel.Dock="Bottom" HorizontalAlignment="Right" Orientation="Horizontal"> <Button Margin="10,10,2,10" Padding="3" Height="25">OK</Button> <Button Margin="10,10,2,10" Padding="3" Height="25">Cancel</Button> </StackPanel> <TextBox DockPanel.Dock="Top" Margin="10">This is a Text--嵌套布局示例</TextBox> </DockPanel></Window>
五、使用Grid布局
<Window x:Class="Grid.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="173" Width="353"> <Grid ShowGridLines="False"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Button>(0,0)</Button> <Button Grid.Column="2" Grid.ColumnSpan="2">(2,0)</Button> <Button Grid.Row="1" Grid.Column="1">(1,1)</Button> <Button Grid.Row="1" Grid.Column="3">(1,3)</Button> <!-- 窗体分割 --> <GridSplitter Grid.Row="0" Grid.Column="2" Width="3" VerticalAlignment="Stretch" HorizontalAlignment="Center" RenderTransformOrigin="0.5,0.5" Margin="0,0,83,0"> </GridSplitter> </Grid></Window>
六、使用UniformGrid布局
<Window x:Class="Grid.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="173" Width="353"> <Grid ShowGridLines="False"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Button>(0,0)</Button> <Button Grid.Column="2" Grid.ColumnSpan="2">(2,0)</Button> <Button Grid.Row="1" Grid.Column="1">(1,1)</Button> <Button Grid.Row="1" Grid.Column="3">(1,3)</Button> <!-- 窗体分割 --> <GridSplitter Grid.Row="0" Grid.Column="2" Width="3" VerticalAlignment="Stretch" HorizontalAlignment="Center" RenderTransformOrigin="0.5,0.5" Margin="0,0,83,0"> </GridSplitter> </Grid></Window>
七、使用Canvas面板进行基于坐标的布局
<Window x:Class="Canvas.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="234" Width="327"> <Canvas> <Button Canvas.Left="10" Canvas.Top="10">(10,10)</Button> <Button Canvas.Left="100" Canvas.Top="90" Width="100" Height="80">(100,90)</Button> <Button Canvas.Left="200" Canvas.Top="10">(200,10)</Button> </Canvas></Window>
Z顺序
如果Canvas面板中有多个相互重叠的元素,可通过设置Canvas.ZIndex附加属性来控制他们的层叠的方式,添加的所有元素通常都有相同的ZIndex值,都为0
<span style="font-size:18px;"><Window x:Class="Canvas.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="234" Width="327"> <Canvas> <Button Canvas.Left="10" Canvas.Top="10">(10,10)</Button> <!--Z顺序 --> <Button Canvas.Left="80" Canvas.Top="60" Width="80" Height="60" Canvas.ZIndex="1" >(80,60)</Button> <Button Canvas.Left="141" Canvas.Top="80" Width="100" Height="80" >(100,90)</Button> <Button Canvas.Left="200" Canvas.Top="10">(200,10)</Button> </Canvas> </Window></span>
InkCanvas元素
InkCanvas元素主要目的是用于接收手写笔输入
InkCanvas元素包含两个子内容集合,一个是Children集合,一个是Strokes集合(表示用户在InkCanvas元素上绘制的图形输入)
<span style="font-size:18px;"><Window x:Class="InkCanvas.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="339" Width="422"> <InkCanvas Name="inkcanvas" Background="LightBlue" EditingMode="Ink"> <Image Source="111.jpg" Width="250" Height="250" InkCanvas.Left="20" InkCanvas.Top="20"></Image> </InkCanvas> </Window></span>
EditingMode的枚举值: Ink, GestureOnly, InkAndGesture, EraseByStroke, EraseByPoint, Select, None
八、布局示例:
<span style="font-size:18px;"><Window x:Class="Example.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="336" Width="334"> <Grid > <Grid.RowDefinitions> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="auto"></ColumnDefinition> </Grid.ColumnDefinitions> <Label Margin="3" Content="Home:"></Label> <Label Margin="3" Content="NetWork:" Grid.Row="1"></Label> <Label Margin="3" Content="Web:" Grid.Row="2"></Label> <Label Margin="3" Content="Secondary:" Grid.Row="3"></Label> <TextBox Margin="3" Grid.Column="1">c:\</TextBox> <TextBox Margin="3" Grid.Column="1" Grid.Row="1"></TextBox> <TextBox Margin="3" Grid.Column="1" Grid.Row="2"></TextBox> <TextBox Margin="3" Grid.Column="1" Grid.Row="3"></TextBox> <Button Margin="3" Grid.Column="2" Padding="3" Width="60" Content="Browse"></Button> <Button Margin="3" Grid.Column="2" Grid.Row="1" Padding="3" Width="60" Content="Browse"></Button> <Button Margin="3" Grid.Column="2" Grid.Row="2" Padding="3" Width="60" Content="Browse"></Button> <Button Margin="3" Grid.Column="2" Grid.Row="3" Padding="3" Width="60" Content="Browse"></Button> </Grid></Window></span>
源代码位置:http://download.csdn.net/detail/tingzhiyi/9470830
- WPF学习——布局
- WPF学习——布局
- WPF编程学习——布局
- WPF编程学习——布局
- WPF编程学习——布局
- WPF编程学习——布局
- 学习WPF——WPF布局——初识布局容器
- wpf学习笔记-布局
- WPF布局学习
- WPF布局学习总结
- WPF之路——WPF布局系统
- WPF-Grid布局控件学习
- WPF学习记录-布局[摘抄自博客园(xiepeixing<WPF布局该如何选用panel>与(DotNet菜园<WPF入门教程系列七——布局之WrapPanel与StackPanel(二)>))]
- WPF 4.5和C#(3.4)——布局(布局示例)
- WPF编程学习——布局 StackPanel、WrapPanel、DockPanel、Canvas、Grid
- .NET学习手记之:WPF-布局
- WPF学习之控件与布局
- WPF学习第六集-控件与布局
- HDU 1576:A/B【思维】
- Libgdx 坐标系
- 多线程概述
- 第4周项目6 point类的完整程序
- C语言实现AVL-平衡二叉树
- WPF学习——布局
- meta name的含义:<META http-equiv=Content-Type content="text/html; charset=gb2312">
- hdu 1241 Oil Deposits (深度搜索)
- JVM调优工具
- 个人所得税
- LEETCODE 202
- java Dom 解析xml文档,实现xml文档结点的增删改查,遍历
- 【CSS3】选择器(属性 & 结构性伪类)--慕课网【学习总结】
- iOS-常见加密总结